如何让 Docker 容器在系统启动时自动启动?

新手上路,请多包涵

假设我有一个要运行的 Docker 容器,那么我可以调用

$ docker run ...

一切都很好。如果系统崩溃并重新启动,是否有内置的方式来运行容器以自动重新启动?

如果是这样,这在 Docker Compose 中是否也可用?

原文由 Golo Roden 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 861
2 个回答

如果您希望即使没有用户执行登录也启动容器(例如我只启动并且不想每次登录的 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 许可协议