重新启动已经停止的容器
例如,我使用docker ps
命令没有发现容器正在启动
但是你可以使用 docker start cxuan_container
启动指定的container。
重新使用 docker ps 查看活跃的docker 容器
也可以直接根据container id进行启动,我先用 docker ps -a 查看一下所有的container
比如我想启动containerId 为 18178c34cd5a 这个容器,就直接使用 docker start 18178c34cd5a
,启动完成后会直接输出 containerId。
重新查询现在正在运行的 docker container ,发现两个都在运行了
附着容器
Docker 容器重新启动的时候,会沿用docker run 命令时指定的参数来运行,因此我们容器重新启动后会运行一个交互式会话shell。此外,我们也可以用 docker attach
命令,重新附着该容器到会话上
也可以通过 docker attach containerId
的方式附着到会话上,如下所示
如果退出 shell 进程,容器也会随之停止运行
创建守护式容器
除了这些交互式运行的容器,我们也可以创建长期运行的容器。守护式容器没有交互式会话,非常适合运行应用程序和服务。大多数情况下我们需要以守护式来运行我们的容器。下面我们创建一个守护式容器
上面的示例中使用了 -d ,因此 Docker 会将容器放在后台进行。
我们还在容器要运行的命令行里使用了一个 while 循环,该循环会一致打印 hello world 直到容器或者进程停止运行。
容器日志
上面的示例我们创建了一个 docker 的守护式进程,进程里面一直在使用 while 进行循环输出 hello world,为了探究容器内部都在做什么,我们使用docker logs
命令来获取容器的日志,如下
可以看到,其内部一直在做while 循环并输出 hello world,Docker 会输出最后几条日志并返回,我们可以使用 -f 参数来监控Docker 的日志,这与 tail -f 命令非常像
我们在日志的循环输出中加了几个空行,能让你直观的感受到我们正在监控 docker 日志的运行过程,你可以使用 control + c 来退出监控。
我们也可以跟踪日志的某一片段,例如,可以使用 docker logs --tail 10 daemon_dave
获取日志的最后10行内容。另外,也可以使用 docker logs --tail 0 -f daemon_dave
命令来追踪某个容器的最新日志而不必读取整个日志文件
追踪最新日志:
其实可以看到,日志一直在循环输出,没有显示之前的日志信息。
为了让调试更加简单,我们可以使用 -t 来为每条日志加上时间戳,如下