centos 使用 systemctl 使 docker 容器(container)开机启动

docker 提供了简单的操作容器的命令。但是他操作容器的命令不属于系统。

由于太简单,必然有很多不足。例如 启动顺序、依赖性检查、失败服务恢复等,均需要一个成熟的系统服务管理软件来完成。

本文使用redis作为例子:
第一步:下载镜像

# docker pull docker.io/redis

第二步:启动镜像

# docker run -d --name redis_server -p 6379:6379 redis

第三步:进入/etc/systemd/system/目录并创建docker-container\@.service文件

#cd /etc/systemd/system/
#vi /etc/systemd/system/docker-container\@.service

注意:不要以为docker-container\@.service缺少了什么,他的名字就叫这个。

将一下内容复制进去

[Unit]
Description=Docker Container %I
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a %i
ExecStop=/usr/bin/docker stop -t 2 %i

[Install]
WantedBy=default.target

第四步:设置开机启动(注意:开机先启动docker才能再启动容器)

# systemctl enable docker.service
# systemctl enable docker-container\@redis.service

第五步:检查是否能正常启动

# systemctl start docker-container\@redis.service
# systemctl status docker-container\@redis.service

第四第五步 调用的docker-container\@redis.service服务,实际上是docker-container\@.service 服务。redis替换了第三步内容的 %i
最后重启试试。


以下方法仅用于未启动的容器

要是需要在容器中加入环境变量的话, 就必须使用docker run 而不是docker start了,请参考一下内容。
特别注意:
1、使用 systemctl stop docker-container\@redis_server.service 是会删除容器的,删除了容器的内容就没有了。
2、docker run的地方不能加-d,加了-d就是分离模式了。

vi /etc/systemd/system/docker-container\@redis_server.service

[Service]
ExecStart=
ExecStart=/usr/bin/docker run --env foo=bar --name %i redis
ExecStopPost=/usr/bin/docker rm -f %i
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 CentOS启动 Docker,您可以按照以下步骤操作。 首先,您需要设置 Docker 镜像源。可以执行以下命令将阿里云的镜像源添加到 Docker 配置文件中: ``` yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` 接下来,您需要修改 Docker 配置文件,将原始镜像源替换为阿里云的镜像源: ``` sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo ``` 然后,运行以下命令以加快 yum 的缓存生成速度: ``` yum makecache fast ``` 现在,您可以使用以下命令安装 Docker CE: ``` yum install -y docker-ce ``` 完成安装后,您可以使用以下命令来启动、停止和重启 Docker 服务: ``` systemctl start docker # 启动 Docker 服务 systemctl stop docker # 停止 Docker 服务 systemctl restart docker # 重启 Docker 服务 ``` 如果您想要查看 Docker 服务的状态,可以运行以下命令: ``` systemctl status docker ``` 另外,如果您希望 Docker 容器自动启动,您可以使用 `--restart=always` 参数来启动容器,例如: ``` docker run -d --restart=always --name=nginx 605c77e624dd ``` 如果已经启动容器需要自动启动,可以使用 `docker update` 命令进行更新: ``` docker update --restart=always <container_id> ``` 请注意,上述命令中的 `<container_id>` 应替换为您要设置自动启动容器的实际容器 ID。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker安装、启动(及开机自启)及配置镜像加速【CentOS】](https://blog.csdn.net/qq_36515317/article/details/127913250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值