如何通过Dockerfile或Docker.DotNet设置容器重启策略?
配置Docker容器的
unless-stopped重启策略 首先明确:Dockerfile无法配置容器的重启策略,因为重启策略是容器运行时的属性,不属于镜像配置,所以你当前的Dockerfile不需要做任何修改。
接下来分场景说明配置方式:
1. 创建容器时直接配置重启策略
重启策略需要在创建容器阶段设置,而非启动阶段。ContainerStartParameters仅用于给已创建的容器传递启动参数,无法用来配置重启策略。你需要在调用CreateContainerAsync时,通过CreateContainerParameters的HostConfig属性设置:
var createParams = new CreateContainerParameters { Image = "你的镜像名称", Name = "容器名称", Entrypoint = new List<string> { "asd", "proj.dll" }, HostConfig = new HostConfig { RestartPolicy = new RestartPolicy { Name = "unless-stopped" } } }; // 先创建容器 var container = await dockerClient.Containers.CreateContainerAsync(createParams); // 再启动容器 await container.StartContainerAsync(container.ID, null);
2. 给已创建的容器修改重启策略
如果容器已经创建完成,你可以通过UpdateContainerAsync来修改它的重启策略:
var updateParams = new ContainerUpdateParameters { RestartPolicy = new RestartPolicy { Name = "unless-stopped" } }; await dockerClient.Containers.UpdateContainerAsync(container.ID, updateParams);
补充说明
- 重启策略的可选值包括:
no(默认,不自动重启)、always(总是自动重启)、unless-stopped(手动停止后不再重启)、on-failure(容器异常退出时重启,可配合MaximumRetryCount设置重试次数)。
内容的提问来源于stack exchange,提问作者Ivan Andreev
相关产品推荐
相关产品推荐

