Docker 容器为何会被重新创建

48次阅读
没有评论

问题描述

在 Amazon EC2 实例上测试 WordPress Docker 时,用户遇到了一个问题:WordPress 容器的文件更改(如插件、主题等)会在某些情况下丢失。尽管 EC2 实例已经运行了 8 天,其他容器也是如此,但 WordPress 容器似乎在 20 小时前被重新创建了。用户想要了解以下问题:
1. 容器在什么事件下会被重新创建?用户并没有使用 docker run 命令来重新创建容器。
2. 如何查看发生在 Docker 守护进程上的所有事件日志(而不仅仅是特定容器内部的日志)?

用户提供了以下关于 Docker 服务的日志信息:

Jun 11 16:05:44 ip-172-31-39-113 dockerd[906]: time="2019-06-11T16:05:44.328303723Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/deleteJun 13 04:05:30 ip-172-31-39-113 dockerd[906]: time="2019-06-13T04:05:30.306067658Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/deleteJun 13 13:40:31 ip-172-31-39-113 systemd[1]: Stopping Docker Application Container Engine...Jun 13 13:40:31 ip-172-31-39-113 dockerd[906]: time="2019-06-13T13:40:31.557328738Z" level=info msg="Processing signal 'terminated'"

以及使用 docker ps -a 命令的输出:

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                    PORTS               NAMES
3aebfdef77c8        wordpress:latest                   "docker-entrypoint.s…"   24 hours ago        Exited (0) 15 hours ago  site-wordpress

解决方案

请注意以下操作注意版本差异及修改前做好备份。

重新创建容器的原因

首先,容器在没有启用类似 Swarm 模式的情况下不会自行重新创建。鉴于你没有使用这些模式,有可能是某个外部工具通过 Docker API 重新创建了容器。这可能是通过 docker-compose 命令、直接运行 docker 命令或脚本、其他编排工具等触发的。你可以使用 docker events 命令来查看已发生的 API 调用,但你需要在 Docker 之外寻找这些命令的来源。

查看 Docker 守护进程日志

要查看 Docker 守护进程的日志,你可以参考 Docker 官方文档的相关内容。你可以编辑 Docker 配置文件来启用日志记录,并通过查看日志文件来获取有关 Docker 守护进程活动的更多信息。以下是大致的步骤:
1. 打开 Docker 守护进程的配置文件。在大多数 Linux 系统上,它位于 /etc/docker/daemon.json
2. 在配置文件中添加或修改日志相关的配置项,例如:
json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}

在上面的配置中,我们指定使用 JSON 文件记录日志,同时设置单个日志文件的最大大小和最大文件数。
3. 保存并关闭配置文件,然后重启 Docker 守护进程以应用更改:
sudo systemctl restart docker
4. 此后,你可以在 Docker 守护进程的日志文件中查看详细信息,以了解容器的创建、重启以及其他活动。

总结

在处理 Docker 容器被重新创建的问题时,你需要考虑外部工具是否介入,导致容器被重新启动。同时,配置 Docker 守护进程的日志记录也可以帮助你更好地追踪容器的状态变化和相关事件。

请注意,以上解决方案可能会根据 Docker 版本和环境而有所不同。建议在操作之前,先进行适当的备份,并在执行任何配置更改时,仔细阅读相关文档和指南。

正文完