假设我有一个要运行的 Docker 容器,那么我可以调用
$ docker run ...
一切都很好。如果系统崩溃并重新启动,是否有内置的方式来运行容器以自动重新启动?
如果是这样,这在 Docker Compose 中是否也可用?
原文由 Golo Roden 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个要运行的 Docker 容器,那么我可以调用
$ docker run ...
一切都很好。如果系统崩溃并重新启动,是否有内置的方式来运行容器以自动重新启动?
如果是这样,这在 Docker Compose 中是否也可用?
原文由 Golo Roden 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您希望即使没有用户执行登录也启动容器(例如我只启动并且不想每次登录的 VirtualBox VM)。以下是我为 Ubuntu 16.04 LTS 执行的步骤。例如,我安装了一个 oracle db 容器:
$ docker pull alexeiled/docker-oracle-xe-11g
$ docker run -d --name=MYPROJECT_oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-oracle-xe-11g
$ vim /etc/systemd/system/docker-MYPROJECT-oracle_db.service
并添加以下内容:
[Unit]
Description=Redis container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a MYPROJECT_oracle_db
ExecStop=/usr/bin/docker stop -t 2 MYPROJECT_oracle_db
[Install]
WantedBy=default.target
并在启动时启用服务
sudo systemctl enable docker-MYPROJECT-oracle_db.service
有关更多信息 https://docs.docker.com/engine/admin/host_integration/
原文由 kon 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答722 阅读
1 回答598 阅读✓ 已解决
1 回答551 阅读
是的,docker 有 重启策略,例如
docker run --restart=always
可以处理这个问题。这在 compose.yml 配置文件 中也可用restart: always
。