docker 容器管理

docker run 等于创建+启动

docker run 镜像名,如果镜像不存在本地,则会在线去下载该镜像

注意:容器内进程必须处于前台运行状态,否则容器就会直接退出

如果容器内,什么事也没做,容器也会挂掉

我们运行nginx基础镜像,没有运行任何程序,因此容器之间挂掉

#运行容器的玩法
#1.运行一个挂掉的容器(从错误示范来学docker容器)
docker run centos:7.8.2003
这个写法,会产生多条独立的容器记录,且容器内没有程序


#2.运行容器,且进入容器内,且在容器内执行某个命令

[root@master ~]# docker run -it centos:7.8.2003 sh
sh-4.2# 
sh-4.2# 

3。开启一个容器,让它帮你运行某个程序,前台运行,会卡住一个终端

[root@master ~]# docker run -it centos:7.8.2003 ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=127 time=31.5 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=127 time=31.6 ms


4.运行一个或者的容器,docker ps 可以看到容器
-d 参数 ,让容器在后台跑着(针对宿主机而言)
返回容器id

[root@master ~]# docker run -d centos:7.8.2003 ping baidu.com
41dc29c041cdb2e81bd697a6622d9a534d1ecc3990d8f49d7cf689114687e023

5.丰富docker运行参数
-d 后台运行
--rm 容器挂掉后自动被删除
--name  给容器起一个名字
[root@master ~]# docker run -d --rm --name baidu centos:7.8.2003 ping baidu.com

停止容器

[root@master ~]# docker stop 41dc29c041cd
41dc29c041cd


6.查看容器日志的玩法,刷新日志

[root@master ~]# docker logs -f 0268b973c4b0(容器id)

[root@master ~]# docker logs 0268b973c4b0 | tail -5


7.进入正在运行的容器空间内
exec指令用于进入容器空间内
[root@master ~]# docker exec -it 0268b973c4b0 bash

8.查看容器的详细信息,用于高级的调试
[root@master ~]# docker container inspect 0268b973c4b0


9.容器的端口映射
#后台运行nginx容器,且起个名字,且端口映射宿主机的85端口,访问到容器的80端口

[root@master ~]# docker run -d --name li_nginx -p 85:80 nginx
1b26e1793cde24af56161a69ee56917e57861be5fadfacfa78a8de5cfbd8385f

#查看容器

[root@master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                               NAMES
4aed5becbae5   nginx     "/docker-entrypoint.…"   26 seconds ago   Up 25 seconds   80/tcp                              boring_chebyshev
1b26e1793cde   nginx     "/docker-entrypoint.…"   5 minutes ago    Up 5 minutes    0.0.0.0:85->80/tcp, :::85->80/tcp   li_nginx
8063e8de1ebe   nginx     "/docker-entrypoint.…"   3 days ago       Up 3 days       0.0.0.0:80->80/tcp, :::80->80/tcp   cranky_fermat


查看容器的端口转发情况
docker port   容器id
[root@master ~]# docker port 1b26e1793cde
80/tcp -> 0.0.0.0:85
80/tcp -> [::]:85

#随机端口映射 -P 随机访问一个宿主的空闲端口,映射到映射到容器内打开的端口
[root@master ~]# docker run -d --name li_nginx_random -P nginx 
0924ee6b976ec6c31527e36a390e6cb5f6d7ad95ec2bfd5d3acf2a7b5b5d13c9
[root@master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                     NAMES
0924ee6b976e   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds    0.0.0.0:49153->80/tcp, :::49153->80/tcp   li_nginx_random
16e8529cd695   nginx     "/docker-entrypoint.…"   27 seconds ago   Up 26 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp         li_nginx_80
1b26e1793cde   nginx     "/docker-entrypoint.…"   20 minutes ago   Up 20 minutes   0.0.0.0:85->80/tcp, :::85->80/tcp         li_nginx





10.容器的提交
#运行基础的centos:7.8.2003,在容器内安装vim ,然后提交新的镜像
#新的镜像,在运行出的容器,默认就携带vim了


[root@master ~]# docker run -it centos:7.8.2003 bash

[root@e566daab5b5c /]# yum install vim -y

[root@master ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                         NAMES
e566daab5b5c   centos:7.8.2003   "bash"                          upbeat_cray

#e566daab5b5c 容器Id
[root@master ~]# docker commit e566daab5b5c li163/centos
-vim-7.8-2003
sha256:24413dd3c1695f946828f7c37a834cd2cc300bff91a9979823e44cbf0466b260
[root@master ~]# docker images
REPOSITORY                  TAG        IMAGE ID       CREATED          SIZE
li163/centos-vim-7.8-2003   latest     24413dd3c169   19 seconds ago   488MB

[root@master ~]# docker run -it li163/centos-vim-7.8-2003 bash
[root@e57472646c6e /]# vim xiaoke.txt
[root@e57472646c6e /]# 

随机端口映射