当前位置: 首页 > 知识库问答 >
问题:

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

昌栋
2023-03-14

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

$ docker run ...

一切都很好。是否有一种内置方法可以运行容器,以便在系统崩溃并重新启动时自动重新启动容器?

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

共有3个答案

楚嘉
2023-03-14

默认重启策略是no

对于创建的容器,使用docker update更新重启策略。

docker update --restart=always 0576df221c0b

< code>0576df221c0b是容器id。

郭琦
2023-03-14

如果您想在没有用户登录的情况下启动容器(比如我只启动的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/

钱志强
2023-03-14

是的,docker 具有重新启动策略,例如 docker run --restart=always,它将处理此问题。这在 compose.yml 配置文件中也可以作为 restart: always 使用。

 类似资料:
  • 问题内容: 假设我有一个要运行的Docker容器,那么我可以调用 一切都很好。如果系统崩溃并重新启动,是否有内置的方式来运行容器,使其能够自动重新启动? 如果是这样,这在Docker Compose中也可用吗? 问题答案: 是的,docker具有重启策略,该策略可以处理此问题。这也可以在compose.yml配置文件中找到。

  • 问题内容: 我使用以下命令创建了容器: 以下是命令: 真的没有太多要说的,我希望容器能启动并保持正常运行。这是日志: 问题答案: 您正在尝试运行,它是需要tty 才能运行的交互式外壳。使用,在“分离”模式下运行此命令实际上没有任何意义,但是您可以通过添加到命令行来做到这一点,以确保容器具有与其关联的有效tty并保持连接状态: 在启动分离的容器时,您通常会运行某种长期存在的非交互式进程(例如,或We

  • 问题内容: 鉴于: 基于ubuntu的容器:13.10 已安装ssh(通过) 问题:每次启动容器时,我都必须手动运行sshd 尝试过:,但无济于事。 问题:如何设置容器以在容器启动期间自动启动sshd服务? 问题答案: 您可以尝试使用phusion / baseimage-docker实现更优雅的方式 https://github.com/phusion/baseimage- docker#rea

  • 给定: 基于Ubuntu:13.10的容器 已安装ssh(通过)

  • 问题内容: 我正在尝试创建一个将自动启动apache的Dockerfile。没事。但是,如果我登录到容器并运行它就可以了。为什么我不能从Dockerfile运行该命令? 问题答案: 问题出在这里:执行此命令时,进程将与外壳分离。但是Docker仅在主进程处于活动状态时才能工作。 解决方案是在 前台 运行Apache 。必须看起来像这样:(仅更改了最后一行)。

  • 我有一个Dockerfile来在容器中安装MySQL server,然后我这样开始: 但MySQL服务不会自动启动,我必须手动运行(从容器内): 如何在运行docker容器时自动启动MySQL服务?