【Docker学习总结】6.Docker守护式容器

我们学习了如何运行一个“交互式”的容器,这些容器在命令交互之后就会停止。但是,在大多数情况下,我们需要一个能够长期运行的容器来提供服务,这就是Docker的“守护式”进程。即我们可以使用守护方式来运行容器,使得容器可以在后台一直保持运行状态。

守护式进程的特点是:
(1)能够长期运行
(2)没有交互式会话
(3)适合运行应用程序和服务
 

一、运行守护式容器

那么,如何使用守护的形式来运行我们的容器呢?有两种方式进行守护式进程的运行:
●以命令方式运行守护式进程
●以参数设定方式运行守护式进程

(1)命令方式
首先我们使用run命令+bash会运行容器并进入容器的交互控制台:

docker run -i -t IMAGE /bin/bash

此时我们使用Ctrl+PCtrl+Q的方式退出容器的控制台,此时容器就会在后台运行。

那么我们如何再次进入已经退出的容器呢?这就需要docker的attach命令,附加到容器:

docker attach 容器名(CONTAINER ID或NAME)

退出时我们继续使用Ctrl+P或Ctrl+Q的方式退出容器,容器依然会运行在后台,而直接使用exit命令,此时容器就会直接停止。

 

(2)参数设定方式

在使用run方式运行docker容器时,添加“-d”参数,表示在启动容器时,使用后台的方式来执行命令:

docker run -d 容器名(CONTAINER ID或NAME) [COMMAND][ARG...]

-d”参数实际上只是以后台的形式来运行命令,而在命令结束后,容器依旧会停止。

二、查看容器运行日志

我们可以使用docker的“logs”命令来查看:

docker logs -f -t --tail 容器名(CONTAINER ID或NAME)

-f 为--follows,值为true或false,默认为false。该参数告诉logs命令。要一直跟踪日志的变化,并返回结果。
-t 为--timestamps,值为true或false,默认为false。该参数告诉logs命令,在返回的结果上加上时间戳。
--tail 为“all”。该参数指定返回结尾处多少行的日志,和Linux的tail一样。不指定的话,logs会返回所有的日志。
 

我们使用logs命令来查看刚刚守护式进程中命令执行的情况:

这里我们使用-f -t指定动态跟踪日志,并加上时间戳,使用--tail 10打印最新的10行。如果tail参数后面设置为0,则永远返回最新的一行。

 

三、查看容器中的进程

使用“top”命令,来查看一个运行中的容器的进程:

docker top 容器名(CONTAINER ID或NAME)

这里我们通过ps查看哪些容器正在运行,使用top来查看运行中容器的进程:

四、在运行的容器中启动新进程

虽然docker的理念是一个容器运行一种服务,我们仍旧需要在docker中运行多个进程。例如,我们需要对运行中的容器进行维护、监控,或者执行一些管理任务。
docker的exec命令(即execute),就是用来在已经运行的docker容器中启动新的进程:

docker exec -d -i -t 容器名(CONTAINER ID或NAME) [COMMAND][ARG...]

PS:“[COMMAND][ARG...]”代表需要执行的命令和参数
在这里,我们运行docker的exec命令,在正在运行中的“docker_test_d”容器中,启动一个新的bash会话:

然后我们使用Ctrl+P或Ctrl+Q的方式退出容器,使用top命令查看“docker_test_d”容器的进程:

可以发现新的bash进程在“docker_test_d”容器中启动成功。

五、如何停止守护式容器

docker提供两种命令来停止docker守护式容器,分别是“stop”和“kill”:

docker stop 容器名
docker kill 容器名

这两个命令稍微有点不一样。“stop”命令,是发送一个指定到容器,等待容器的停止。而“kill”命令,会直接停止容器。

 

六、总结

(1)使用Ctrl+P或Ctrl+Q的方式将一个交互式的容器转到后台运行。
(2)docker run -d,启动一个守护式容器
(3)docker logs,查看容器日志
(4)docker top,查看运行中容器的进程
(5)docker exec,为运行中的容器启动一个新的进程
(6)docker stop/kill,停止一个运行中的容器
--------------------- 
作者:光仔December 
来源:优快云 
原文:https://blog.youkuaiyun.com/acmman/article/details/83927649 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值