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

假设我有一个Docker容器,我想运行,然后我可以调用

$ docker run ... 

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

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

是的,docker重新启动策略 ,如docker run --restart=always会处理这个。 这在compose.ymlconfiguration文件中也可以restart: always

我希望即使没有用户执行login(如VirtualBox虚拟机,我只启动,不想每次login)启动容器。 以下是我为Ubuntu 16.04 LTS执行的步骤。 作为一个例子,我安装了一个oracle数据库容器:

 $ 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/