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 /]#
随机端口映射