上一节学习过如何运行一个交互式容器,这些容器在命令结束后就停止,但是大多数时候我们需要一个长期运行的容器来提供服务。这就是Docker
的守护式容器,它能够长期运行,没有交互式会话,适合运行应用程序和服务。
以守护式形式运行容器
最简单的方式是以ctrl+p
,ctrl+p
的方式退出容器,这样容器就会在后台运行:
$ docker run -i -t IMAGE /bin/bash
Ctrl+P Ctrl+Q
想要再次进入到这个运行中的容器,可以采用docker attach
命令附加到运行中的容器:
docker attach 容器名
启动守护式容器
那如何使用run
命令来启动守护式容器呢?
$ docker run -d 镜像名 [COMMAND] [ARG...]
参数-d
会告诉系统,启动容器时,使用后台运行的方式。但是后台如果运行结束的话,容器依然会停止,因此这里采用一个循环来使得后台始终在运行:
查看容器日志
如果想要看容器内部的运行情况,可以查看其日志。
$ docker logs [-f] [-t] [--tail] 容器名
-
-f
表示一直跟踪日志的变化,并返回结果。–follows=True|False 默认为false; -
-t
表示在返回的结果上加上时间戳。–timestamps=true|false 默认为false。 -
--tail
表示返回结尾处多少数量的日志。–tail=“all”。如果不指定,logs会返回所有的日志。
查看容器内进程
通过docker
的top
命令来查看一个运行中容器的进程
$ docker top 容器名
在运行中的容器内启动新进程
虽然docker
的理念是一个容器运行一种服务,但我们仍旧需要在一个容器里面运行多个进程,比如对运行的容器进行维护、监控或者执行一些管理任务。
而docker
的exec
命令就是用来在已经运行的docker
容器中启动新的进程,其命令格式如下:
$ docker exec [-d][-i][-t] 容器名 [COMMAND] [ARG...]
它与run
命令非常相似。
可以看到bash
命令已经在启动的容器中运行了。
停止守护式容器
docker
提供两种停止守护式容器的方式:
$ docker stop 容器名
$ docker kill 容器名
使用man
命令可以查看docker
命令的详细介绍:
man docker-run
man docker-logs
man docker-top
man docker-exec