我正在尝试构建一个通用的系统初始化工具,它将在我们所有的系统上运行,以验证本地 Docker 映像是否未被更改。该工具不会知道应该运行哪些容器,并且会在每次系统启动(或重新启动)时运行以验证系统上 Docker 映像的身份和完整性。我的问题是是否可以启动 Docker 并告诉它不要启动可能设置了重启策略的容器?基本上,我可以在不启动任何容器的情况下启动 Docker 吗?
第二个问题,可能对第一个问题有帮助;守护进程用来确定守护进程启动时需要重新启动哪些容器的配置文件在哪里?
答案1
保存重启策略的容器配置文件位于 /var/lib/docker/containers/HASH/hostconfig 下。
"RestartPolicy":{"Name":"always","MaximumRetryCount":0}
1-如果您尝试停止 docker:
sudo systemctl stop docker
2-改变 总是到没有任何在 /var/lib/docker/containers/HASH/hostconfig 上。
3-启动 Docker 服务:
sudo systemctl start docker
容器自动启动将被禁用。
但为什么不使用简单的语法:
sudo update --restart=none <container_id>
其他方式可以通过重命名/var/lib/docker/容器:
1-停止 Docker
2-将容器文件夹更改回 /var/lib/docker/containers/
3-启动Docker
答案2
我发现 Docker 将配置信息(包括重新启动策略)hostconfig.json
放在/var/lib/docker/containers/
.对于我的测试示例,配置文件是/var/lib/docker/containers/301849...5917f/hostconfig.json
.我停止了 Docker,重命名/var/lib/docker/containers/
并重新启动了 Docker,之前配置的容器都没有重新启动。然后我就可以进行验证。为了让事情再次运行,我做了相反的事情:
- 停止 Docker
- 将容器文件夹更改回
/var/lib/docker/containers/
- 重新启动 Docker
所有配置了重启策略的容器都已重新启动,一切正常。