docker(6):docker的容器管理
docker(6):docker的容器管理
https://www.cnblogs.com/along21/p/10215701.html#auto_id_19
1 docker run启动容器
方法1(不推荐):
先创建一个容器:docker create 镜像名
再启动容器:docker start 容器名
方法2:docker run 镜像名
1.1 格式
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
1.2 options 常用命令选项
- -t :打开一个终端,像使用交换机一样使用容器
- -i:交互式访问
- --name:容器名字
- --network:指定网络
- --rm:容器一停,自动删除
- -d:剥离与当前终端的关系;否则会一直占据着终端
- -p:端口映射,将容器内服务的端口映射在宿主机的指定端口
- -p <container port>
- -p <hostport>:<container port>
- -p <hostip>:<hostport>:<container port>
1.3 启动一个Nginx容器
docker run --name web1 -d -p 80:80 nginx
[root@docker-136 ~]# docker run --name web1 -d -p 80:80 nginx e17e2232b811d7960720b12d475a7f03ddfd4ecc610496de4ca1760706009085 [root@docker-136 ~]#
1.4 docker run it 在运行容器时,交互式进入容器
[root@docker-136 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest e445ab08b2be 2 weeks ago 126MB httpd latest ee39f68eb241 3 weeks ago 154MB centos latest 9f38484d220f 4 months ago 202MB hello-world latest fce289e99eb9 7 months ago 1.84kB httpd 2.2 e06c3dbbfe23 18 months ago 171MB [root@docker-136 ~]# docker run -it --name centos7 centos /bin/bash [root@813cd57daf51 /]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@813cd57daf51 /]# exit exit [root@docker-136 ~]#
2 docker ps查看运行的容器
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 4 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp web1
-a 显示所有
注:容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!
[root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 4 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp web1 ab61a660c7d9 nginx "nginx -g 'daemon of…" 12 minutes ago Created elegant_panini 50adc161a93e nginx "nginx -g 'daemon of…" 20 hours ago Exited (0) 7 minutes ago vibrant_hermann 477a2958d206 nginx "nginx -g 'daemon of…" 20 hours ago Exited (0) 20 hours ago boring_northcutt 322bf01b0b1f hello-world "/hello" 20 hours ago Exited (0) 20 hours ago bold_chebyshev a331eb436df0 hello-world "/hello" 20 hours ago Exited (0) 20 hours ago quirky_shtern
-q只显示ID
[root@docker-136 ~]# docker ps -a -q e17e2232b811 ab61a660c7d9 50adc161a93e 477a2958d206 322bf01b0b1f a331eb436df0 [root@docker-136 ~]#
3 docker rename容器改名
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 22 minutes ago Up 21 minutes 0.0.0.0:80->80/tcp web1 [root@docker-136 ~]# docker rename web1 web_80 [root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 22 minutes ago Up 21 minutes 0.0.0.0:80->80/tcp web_80 [root@docker-136 ~]#
4 docker start ID/name激活关闭的容器
docker start
(1)格式
Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]
(2)Options:
-a:附加到当前终端
-i:交互式
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 813cd57daf51 centos "/bin/bash" 13 minutes ago Exited (137) 21 seconds ago centos7 e17e2232b811 nginx "nginx -g 'daemon of…" 29 minutes ago Exited (0) 11 seconds ago web_80 [root@docker-136 ~]# docker start web_80 web_80 [root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 30 minutes ago Up 24 seconds 0.0.0.0:80->80/tcp web_80 [root@docker-136 ~]# docker restart web_80 web_80 [root@docker-136 ~]# [root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 813cd57daf51 centos "/bin/bash" 16 minutes ago Exited (137) 3 minutes ago centos7 e17e2232b811 nginx "nginx -g 'daemon of…" 32 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp web_80 [root@docker-136 ~]# docker start -i -a centos7 [root@813cd57daf51 /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@813cd57daf51 /]# hostname 813cd57daf51 [root@813cd57daf51 /]# exit exit [root@docker-136 ~]#
5 docker inspect ID/name查看容器的详细信息
[root@docker-136 ~]# docker inspect web1 [root@docker-136 ~]# docker inspect web_80 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", [root@docker-136 ~]# curl 172.17.0.2 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [root@docker-136 ~]#
6 docker stop/kill ID/name停止容器
[root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 813cd57daf51 centos "/bin/bash" 26 minutes ago Up 8 seconds centos7 e17e2232b811 nginx "nginx -g 'daemon of…" 43 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp web_80 [root@docker-136 ~]# docker kill centos7 centos7 [root@docker-136 ~]# docker stop e17e2232b811 e17e2232b811 [root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@docker-136 ~]#
7 docker rm ID/name删除容器
先关闭容器,再删除容器
[root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 813cd57daf51 centos "/bin/bash" 27 minutes ago Exited (137) 34 seconds ago centos7 e17e2232b811 nginx "nginx -g 'daemon of…" 44 minutes ago Exited (0) 27 seconds ago web_80 [root@docker-136 ~]# docker rm centos7 centos7 [root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e17e2232b811 nginx "nginx -g 'daemon of…" 44 minutes ago Exited (0) 36 seconds ago web_80 [root@docker-136 ~]#
批量删除
docker rm `docker ps -a -q` #只删除关闭状态的
docker rm -f `docker ps -a -q` #强制删除全部,包括启动中的
[root@docker-136 ~]# docker rm `docker ps -a -q` #只删除关闭状态的 5f7ccce900c3 e17e2232b811 Error response from daemon: You cannot remove a running container 752b6f2ff6dc19ab03d98a67319a4ea7d1547a97ef5bff556ee2aedc858ffa29. Stop the container before attempting removal or force remove [root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 752b6f2ff6dc nginx "nginx -g 'daemon of…" 40 seconds ago Up 38 seconds 80/tcp, 0.0.0.0:81->81/tcp web2 [root@docker-136 ~]# docker rm -f `docker ps -a -q` #强制删除全部,包括启动中的 752b6f2ff6dc [root@docker-136 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@docker-136 ~]#
8 进入容器
8.1 docker attach(不推荐)进入到存活的容器中
进入的终端相同,Ctrl+D 退出容器就死了,不推荐
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1843d1604ac7 centos "/bin/bash" 4 minutes ago Up 10 seconds centos7 [root@docker-136 ~]# docker attach centos7 [root@1843d1604ac7 /]#
8.2 docker exec进入/对运行的容器执行指定命令
options 选项
- -d:在后台运行命令
- -e:设置环境变量
- -i:交互式
- -t:打开一个终端
- -u:用户名或UID
- 暂时退出容器:ctrl+p,ctrl+q
- 回到容器:docker attach id或name
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1843d1604ac7 centos "/bin/bash" 13 minutes ago Up 8 minutes centos7 cea4a6004597 nginx "nginx -g 'daemon of…" 15 minutes ago Up 1 second 0.0.0.0:80->80/tcp web1
#交互式进入容器-it
[root@docker-136 ~]# docker exec -it web1 /bin/bash root@cea4a6004597:/# exit [root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1843d1604ac7 centos "/bin/bash" 13 minutes ago Up 8 minutes centos7 cea4a6004597 nginx "nginx -g 'daemon of…" 15 minutes ago Up 13 seconds 0.0.0.0:80->80/tcp web1
#执行命令
[root@docker-136 ~]# docker exec -it centos7 ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 04:48 pts/0 00:00:00 /bin/bash root 59 0 0 04:57 pts/1 00:00:00 ps -ef [root@docker-136 ~]#
9 docker logs name查看日志
[root@docker-136 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1843d1604ac7 centos "/bin/bash" 17 minutes ago Up 12 minutes centos7 cea4a6004597 nginx "nginx -g 'daemon of…" 19 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp web1 [root@docker-136 ~]# docker inspect web1 | grep IPA "SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAMConfig": null, "IPAddress": "172.17.0.3", [root@docker-136 ~]# curl -s -I 172.17.0.3 HTTP/1.1 200 OK Server: nginx/1.17.2 Date: Wed, 07 Aug 2019 05:01:17 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 23 Jul 2019 11:45:37 GMT Connection: keep-alive ETag: "5d36f361-264" Accept-Ranges: bytes [root@docker-136 ~]# docker logs web1 172.17.0.1 - - [07/Aug/2019:05:00:50 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-" 172.17.0.1 - - [07/Aug/2019:05:00:57 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-" 172.17.0.1 - - [07/Aug/2019:05:01:03 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-" 172.17.0.1 - - [07/Aug/2019:05:01:17 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" "-" [root@docker-136 ~]#
10 docker cp容器copy文件
例如把容器内的配置文件copy出来
[root@docker-136 ~]# ls MadKingClient p.txt tools [root@docker-136 ~]# docker cp cea4a6004597:/etc/nginx/nginx.conf . [root@docker-136 ~]# ls MadKingClient nginx.conf p.txt tools [root@docker-136 ~]#