docker-容器传递命令

传递运行命令

容器需要有一个前台运行的进程才能保持容器的运行,通过传递运行参数是一种方式,另外也可以在构建镜像的时候指定容器启动时运行的前台命令

容器里的PID为1的守护进程的实现方式

-服务类:如:Nginx,tomcat,apache ,但服务不能停
-命令类:如:tail -f /etc/hosts ,主要用于测试环境,注意:不要tail -f 服务访问日志,会产生不必要的磁盘IO

范例:

[root@ubuntu1804 ~]#docker run -d alpine
6ec8989f572a41d2d0c7d2cb12ac31de14de38af0a01af405f81dbfcf534b716
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
6ec8989f572a        alpine              "/bin/sh"           3 seconds ago       Exited (0) 2 seconds ago                       gallant_albattani
[root@ubuntu1804 ~]#docker run -d alpine tail -f /etc/hosts
2bc9fa486769a2335f7e9aa67c7d3e7f091ba9b76d38dff868b8fd648251b576
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
2bc9fa486769        alpine              "tail -f /etc/hosts"   3 seconds ago       Up 2 seconds                                    stupefied_keldysh
6ec8989f572a        alpine              "/bin/sh"              23 seconds ago      Exited (0) 22 seconds ago                       gallant_albattani

[root@ubuntu1804 ~]#docker exec -it 2bc9fa486769 sh
/ # ps aux
PID   USER     TIME  COMMAND
    1 root      0:00 tail -f /etc/hosts
   11 root      0:00 sh
   17 root      0:00 ps aux
/ # exit
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS               NAMES
1e30dfc283da        alpine              "tail -f /etc/hosts"   About a minute ago   Up About a minute                       kind_mcclintock
容器的启动和停止

格式

docker start|stop|restart|pause|unpause 容器ID

范例:

[root@ubuntu1804 ~]#docker run -d  --name nginx1 nginx 
8d9342b35589b72c3f7f01f4d9fe8797e974cda8ba28d2bac69ee578aa592ca2
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
8d9342b35589        nginx               "nginx -g 'daemon of…"   5 seconds ago       Up 4 seconds        80/tcp              nginx1
[root@ubuntu1804 ~]#docker stop nginx1
nginx1
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
8d9342b35589        nginx               "nginx -g 'daemon of…"   15 seconds ago      Exited (0) 2 seconds ago                       nginx1
[root@ubuntu1804 ~]#docker start nginx1
nginx1
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
8d9342b35589        nginx               "nginx -g 'daemon of…"   21 seconds ago      Up 1 second         80/tcp              nginx1
[root@ubuntu1804 ~]#docker restart nginx1
nginx1
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
8d9342b35589        nginx               "nginx -g 'daemon of…"   30 seconds ago      Up 1 second         80/tcp              nginx1
[root@ubuntu1804 ~]#

批量正常关闭所有运行中的容器

docker stop $(docker ps -a -q)  

范例:

[root@ubuntu1804 ~]#docker rm -f docker ps -a -q
b722c745406c
8d9342b35589
[root@ubuntu1804 ~]#docker run -d  --name nginx1 nginx 
1f3f82995e052647678fd27bfa27a5b5615efc129270698cbaac3120544d6609
[root@ubuntu1804 ~]#docker run -d  --name nginx2 nginx 
dd002f947cbe786ac0e834e06744337556f82d5850f4b16e01f12b9b3759f83e
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        80/tcp              nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   7 seconds ago       Up 6 seconds        80/tcp              nginx1
[root@ubuntu1804 ~]#docker stop docker ps -a -q
dd002f947cbe
1f3f82995e05
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   22 seconds ago      Exited (0) 2 seconds ago                       nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   25 seconds ago      Exited (0) 2 seconds ago                       nginx1
[root@ubuntu1804 ~]#docker start docker ps -a -q
dd002f947cbe
1f3f82995e05
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 1 second         80/tcp              nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 1 second         80/tcp              nginx1

范例:暂停和恢复容器

[root@ubuntu1804 ~]#docker run -itd centos
708bedcbd31be0ecac11aa21a7d15718d440e4bf65e3e6a8670f7391de21f301
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
708bedcbd31b        centos              "/bin/bash"         4 seconds ago       Up 1 second                             blissful_payne
[root@ubuntu1804 ~]#docker pause   blissful_payne
blissful_payne
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
708bedcbd31b        centos              "/bin/bash"         19 seconds ago      Up 17 seconds (Paused)                       blissful_payne
[root@ubuntu1804 ~]#docker unpause  blissful_payne
blissful_payne
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
708bedcbd31b        centos              "/bin/bash"         33 seconds ago      Up 31 seconds                           blissful_payne
给正在运行的容器发信号

docker kill 可以给容器发信号

格式

docker kill [OPTIONS] CONTAINER [CONTAINER...]
选项:
-s, --signal string   Signal to send to the container (default "KILL")
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 1 second         80/tcp              nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 1 second         80/tcp              nginx1
[root@ubuntu1804 ~]#docker  kill nginx1
nginx1
[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   5 minutes ago       Up 3 minutes                 80/tcp              nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   5 minutes ago       Exited (137) 2 seconds ago                       nginx1
[root@ubuntu1804 ~]#

范例:关闭所有容器

[root@ubuntu1804 ~]#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dd002f947cbe        nginx               "nginx -g 'daemon of…"   7 minutes ago       Up 2 seconds        80/tcp              nginx2
1f3f82995e05        nginx               "nginx -g 'daemon of…"   7 minutes ago       Up 3 seconds        80/tcp              nginx1

#强制关闭所有运行中的容器
[root@ubuntu1804 ~]#docker  kill docker ps -a -q
dd002f947cbe
1f3f82995e05

本文链接:http://www.yunweipai.com/34803.html

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/52653.html

(0)
上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐

发表回复

登录后才能评论