docker知识:docker 容器修改为设置开机自启

本文介绍如何通过修改Docker容器配置实现开机自启动,包括获取容器ID、关闭容器及Docker服务、修改配置文件并重启服务的步骤。注意,推荐基于镜像创建新容器以确保稳定。

docker知识:docker 容器修改为设置开机自启

1.获取容器的CONTAINER ID

[root@node1 ~]# docker ps --no-trunc
81ac47789a9b192d6d900b933549c9144ff9ec42aa82650ed6543517661c272e

2.关闭容器

[root@node1 ~]# docker stop 81ac47

3.关闭docker服务

[root@node1 ~]# service docker stop

4.修改容器配置文件

[root@node1 ~]# cd /var/lib/docker/containers/81ac47………….272e
[root@node1 81ac47………….272e]# vim hostconfig.json
?RestartPolicy
{"Name":"always","MaximumRetryCount":0}

5.启动docker服务

[root@node1 ~]# service docker start

尖叫提示:

不建议修改,正确做法,应基于镜像重新生成新的容器
<think> 我们正在回答用户关于设置Docker容器开机的问题。根据引用内容,我们可以总结出两种主要方法:使用`docker update`命令设置容器的重策略,以及通过配置Docker服务实现。下面将详细说明。 ### 方法一:使用`docker update`命令设置容器自动重 通过`docker update`命令可以修改容器的重策略,使其在宿主机重后自动动。具体步骤如下: 1. **查看当前运行的容器**(可选): ```bash docker ps -a ``` 2. **设置容器自动重策略**: 使用以下命令将容器的重策略设置为`always`(总是重): ```bash docker update --restart=always <容器名称或容器ID> ``` 例如,如果容器名为`my_nginx`,则命令为: ```bash docker update --restart=always my_nginx ``` 3. **验证设置**: 使用`docker inspect`命令检查容器的重策略: ```bash docker inspect -f "{{ .HostConfig.RestartPolicy }}" my_nginx ``` 如果返回`{always}`,则表示设置成功。 > **重策略选项说明**: > - `no`:默认策略,容器退出时不重 > - `on-failure`:容器非正常退出(退出状态非0)时重,可附加重次数(如`on-failure:3`表示最多重3次) > - `always`:容器退出时总是重(推荐用于开机) > - `unless-stopped`:总是重,但忽略Docker守护进程动前已停止的容器[^3] ### 方法二:通过Docker服务配置实现容器 如果你希望Docker服务动时自动动某些容器,可以修改Docker服务的配置文件: 1. **编辑Docker服务配置文件**: ```bash sudo vim /etc/docker/daemon.json ``` 2. **添加容器配置**: 在配置文件中加入以下内容(如果文件已存在,则合并内容): ```json { "live-restore": true, "restart-policy": "always" } ``` 3. **重Docker服务**: ```bash sudo systemctl restart docker ``` > 注意:此方法会影响所有容器,通常建议使用方法一针对特定容器设置[^1]。 ### 取消容器开机 如果需要取消某个容器开机设置: ```bash docker update --restart=no <容器名称或容器ID> ``` ### 常见问题解决 - **容器无法自动动?** 1. 检查Docker服务是否开机:`sudo systemctl is-enabled docker` 2. 检查容器日志:`docker logs <容器ID>` 3. 确保容器正常退出(状态码0),否则`always`策略也会重 - **宿主机重容器动?** 1. 确认Docker服务已设置开机动: ```bash sudo systemctl enable docker ``` 2. 检查防火墙或SELinux是否阻止容器动 ### 重策略对比表 | 策略 | 退出时重 | 非0退出重 | 守护进程动时重 | |---------------|------------|--------------|---------------------| | `no` | ✗ | ✗ | ✗ | | `on-failure` | ✗ | ✓ | ✓ | | `always` | ✓ | ✓ | ✓ | | `unless-stopped` | ✓ | ✓ | ✗ (若之前已停止) | > 注:`unless-stopped`策略会忽略守护进程动前手动停止的容器[^3] $$ \text{自成功率} = \frac{\text{成功自次数}}{\text{宿主机重总次数}} \times 100\% $$ > 使用`always`策略在正常情况下可达100%[^2] §§相关问题§§ 1. Docker容器策略有哪些区别? 2. 如何设置Docker服务开机? 3. 如何查看Docker容器的退出状态码? 4. Docker容器自动重失败如何排查? [^1]: Docker配置容器开机方法 [^2]: Docker容器开机动脚本配置 [^3]: Docker容器策略详解 </think> ### Docker容器设置开机方法详解 #### 方法一:使用`docker update`命令(推荐) ```bash # 设置容器开机(always策略) docker update --restart=always <容器名称或容器ID> # 示例:设置名为nginx的容器开机 docker update --restart=always nginx ``` > **重策略说明**: > - `always`:容器退出时总是重(最常用)[^3] > - `unless-stopped`:总是重,但忽略Docker守护进程动前已停止的容器 > - `on-failure[:max-retries]`:仅当非正常退出时重(可设置最大重试次数) #### 方法二:运行容器时直接指定 ```bash docker run -d --restart=always \ --name my-container \ my-image:tag ``` #### 方法三:修改容器配置文件(持久化配置) 1. 停止容器 ```bash docker stop <容器ID> ``` 2. 编辑配置文件 ```bash vim /var/lib/docker/containers/<容器ID>/hostconfig.json ``` 3. 修改`RestartPolicy`字段 ```json "RestartPolicy": { "Name": "always", "MaximumRetryCount": 0 } ``` 4. 重Docker服务 ```bash systemctl restart docker ``` #### 验证设置是否生效 ```bash # 检查容器策略 docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" <容器ID> # 模拟测试(重Docker服务后查看容器状态) systemctl restart docker docker ps -a | grep <容器ID> ``` #### 取消开机 ```bash docker update --restart=no <容器名称或容器ID> ``` ### 重策略对比表 | 策略 | 退出时重 | 非0退出重 | 守护进程动时重 | |---------------|------------|--------------|---------------------| | `no` | ✗ | ✗ | ✗ | | `on-failure` | ✗ | ✓ | ✓ | | `always` | ✓ | ✓ | ✓ | | `unless-stopped` | ✓ | ✓ | ✗ (若之前已停止) | > **最佳实践**: > 1. 生产环境推荐使用`always`策略确保服务高可用[^1] > 2. 测试环境可使用`on-failure:5`限制重次数 > 3. 设置容器前确保Docker服务本身已配置开机动: > ```bash > sudo systemctl enable docker > ``` ### 常见问题解决 **问题:设置容器仍未自?** 1. 检查Docker服务状态:`systemctl status docker` 2. 查看容器日志:`docker logs <容器ID>` 3. 确认容器能正常动:`docker start <容器ID>` **问题:容器频繁重?** 使用`on-failure`策略并限制重试次数: ```bash docker update --restart=on-failure:5 <容器ID> ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值