假设我有一个要运行的Docker容器,然后我可以调用
$ docker run ...
一切都很好。是否有一种内置方法可以运行容器,以便在系统崩溃并重新启动时自动重新启动容器?
如果是这样,这在 Docker Compose 中是否也可用?
默认重启策略是no
。
对于创建的容器,使用docker update
更新重启策略。
docker update --restart=always 0576df221c0b
< code>0576df221c0b是容器id。
如果您想在没有用户登录的情况下启动容器(比如我只启动的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/
是的,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服务?