Gol*_*den 47 docker docker-compose
假设我有一个我想要运行的Docker容器,那么我可以调用
$ docker run ...
Run Code Online (Sandbox Code Playgroud)
一切都很好.如果系统崩溃并重新启动,是否有一种内置的方式来运行容器,它将自动重启?
如果是这样,这还可以在Docker Compose中使用吗?
kon*_*kon 73
如果您希望启动容器,即使没有用户执行登录(例如我只启动并且不想每次登录的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
Run Code Online (Sandbox Code Playgroud)
并添加以下内容:
[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
Run Code Online (Sandbox Code Playgroud)
并在启动时启用该服务
sudo systemctl enable docker-MYPROJECT-oracle_db.service
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问https://docs.docker.com/engine/admin/host_integration/
Pet*_*ons 61
是的,搬运工已重新启动的政策,如docker run --restart=always将处理这个问题.这也可以在compose.yml配置文件中找到restart: always.
0xC*_*URU 50
要启动容器并将其设置为在系统重新启动时自动重新启动,请使用
docker run -d --restart unless-stopped ecstatic_ritchie
Run Code Online (Sandbox Code Playgroud)
其中ecstatic_ritchie是指定感兴趣容器的示例名称。用于docker ps -a列出所有容器名称。
使特定正在运行的容器在系统重新启动时自动启动
docker update --restart unless-stopped ecstatic_ritchie
Run Code Online (Sandbox Code Playgroud)
使所有正在运行的容器在系统重新启动时自动启动
docker update --restart unless-stopped $(docker ps -q)
Run Code Online (Sandbox Code Playgroud)
在 Docker主页上查看更多信息
Edw*_*ung 39
在默认情况下重新启动策略是no.
对于创建的容器,用于docker update更新重新启动策略.
docker update --restart=always 0576df221c0b
Run Code Online (Sandbox Code Playgroud)
0576df221c0b 是容器ID.
Sae*_*aeX 22
您可以使用docker update --restart=on-failure <container ID or name>.
顾名思义,on-failure不仅会在失败时重新启动容器,还会在系统启动时重新启动。
根据文档,有多个重启选项:
Flag Description
no Do not automatically restart the container. (the default)
on-failure Restart the container if it exits due to an error, which manifests as a non-zero exit code.
always Always restart the container if it stops. If it is manually stopped, it is restarted only when Docker daemon restarts or the container itself is manually restarted. (See the second bullet listed in restart policy details)
unless-stopped Similar to always, except that when the container is stopped (manually or otherwise), it is not restarted even after Docker daemon restarts.
Run Code Online (Sandbox Code Playgroud)
Abd*_*sit 16
1)首先,你必须在启动时启用docker服务
$ sudo systemctl enable docker
Run Code Online (Sandbox Code Playgroud)
2)然后如果你有 docker-compose .yml 文件添加restart: always或者如果你有docker容器添加restart=always像这样:
docker run --restart=always 并运行 docker 容器
确保
如果您手动停止一个容器,它的重启策略将被忽略,直到 Docker 守护进程重启或容器被手动重启。
看到这个重启政策在 Docker 官方页面上
3)如果你想启动docker-compose,所有的服务都会在你重新启动系统时运行所以你只运行一次下面的命令
$ docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式运行始终重新启动的容器:
$ docker run -dit --restart unless-stopped <image name OR image hash>
Run Code Online (Sandbox Code Playgroud)
如果您想更改正在运行的容器的配置,您应该通过以下方式更新它:
$ docker update --restart=<options> <container ID OR name>
Run Code Online (Sandbox Code Playgroud)
如果您想查看容器的当前策略,请首先在上面运行以下命令:
docker inspect gateway | grep RestartPolicy -A 3
Run Code Online (Sandbox Code Playgroud)
毕竟,不要忘记通过以下方式在系统启动时启用已安装的 docker 守护进程:
$ systemctl enable docker
Run Code Online (Sandbox Code Playgroud)
要查看重启策略的完整列表,请参阅:重启策略
来自文档的更多“温和”模式:
docker run -dit --restart unless-stopped <image_name>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61532 次 |
| 最近记录: |