让我们考虑以下示例:
version: '3'
services:
some_service:
build: .
restart: unless-stopped
此docker-compose
正常工作,但是在重新启动期间,它保留了先前运行(重新启动之前)引入的(在文件系统中)更改。
如何配置重新启动策略以强制丢失文件系统中的更改?是否可以更改正在运行的容器的重启策略?
答案 0 :(得分:1)
Type 'MyAdsManager' does not conform to protocol 'NSObjectProtocol'
部署具有由docker引擎管理的配置的容器。该重新启动策略将应用于由引擎处理的容器。引擎重新启动容器时,将保持先前的容器状态。唯一的例外是容器内的tmpfs文件系统挂载将重置为空目录。
但是,如果您的服务是通过群模式而不是docker-compose管理的,则默认更改将重新创建任何失败的容器,而不仅仅是重新启动它们。您可以使用以下方法配置单节点群集集群:
NSObjectProtocol
然后您可以通过以下方式部署服务:
docker-compose
请注意,在群体模式下,您无需定义重新启动策略。群集模式将纠正与目标状态的任何差异,无论是容器退出,运行状况检查失败还是被删除,响应将是部署新容器。
答案 1 :(得分:0)
在docker-compose up
上创建“容器”时,它们具有自己的文件系统。而且,当您重新启动容器时,它仍然是具有相同文件系统的相同容器。因此,您所期待的一切。
如果要重新启动,则需要执行docker-compose down
删除容器,然后执行up
创建新容器。
您不能在正在运行的容器上更改重启策略。
编辑
@BMitch您可以使用docker update更改重启策略
docker update --restart=on-failure container_id