在 Docker Compose 中重建 Docker 容器
在 Docker Compose 中重建 Docker 容器
1、概述
在本教程中,我们将看到如何使用docker-compose
独立于其他容器重建容器。
2. 问题的呈现
让我们定义一个包含两个容器的 docker-compose.yml
配置文件:一个将引用最新的ubuntu
映像,另一个将引用最新的alpine
映像。我们将为每个带有tty: true
的伪终端添加伪终端,以防止容器在启动时直接退出:
version: "3.9"
services:
ubuntu:
image: "ubuntu:latest"
tty: true
alpine:
image: "alpine:latest"
tty: true
现在让我们构建容器并启动它们。我们将使用带有-d
选项的docker-compose up
命令让它们在后台运行:
$ docker-compose up -d
Container {folder-name}-alpine-1 Creating
Container {folder-name}-ubuntu-1 Creating
Container {folder-name}-ubuntu-1 Created
Container {folder-name}-alpine-1 Created
Container {folder-name}-ubuntu-1 Starting
Container {folder-name}-alpine-1 Starting
Container {folder-name}-alpine-1 Started
Container {folder-name}-ubuntu-1 Started
我们可以快速检查我们的容器是否按预期运行:
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
{folder-name}-alpine-1 "/bin/sh" alpine running
{folder-name}-ubuntu-1 "bash" ubuntu running
现在,我们将了解如何在不影响alpine
容器的情况下重建和重新启动ubuntu
容器。
3. 独立重建和重启容器
将容器的名称添加到docker-compose up
命令就可以了。我们将在启动容器之前添加构建选项来构建镜像。我们还将添加force-recreate
标志,因为我们没有更改图像:
$ docker-compose up -d --force-recreate --build ubuntu
Container {folder-name}-ubuntu-1 Recreate
Container {folder-name}-ubuntu-1 Recreated
Container {folder-name}-ubuntu-1 Starting
Container {folder-name}-ubuntu-1 Started
正如我们所见,ubuntu
容器被重建并重新启动,对alpine
容器没有任何影响。
4.如果容器依赖于另一个容器
现在让我们稍微更新一下 docker-compose.yml
文件,使ubuntu
容器依赖于alpine
容器:
version: "3.9"
services:
ubuntu:
image: "ubuntu:latest"
tty: true
depends_on:
- "alpine"
alpine:
image: "alpine:latest"
tty: true
我们将停止以前的容器并使用新配置从头开始重建它们:
$ docker-compose stop
Container {folder-name}-alpine-1 Stopping
Container {folder-name}-ubuntu-1 Stopping
Container {folder-name}-ubuntu-1 Stopped
Container {folder-name}-alpine-1 Stopped
$ docker-compose up -d
Container {folder-name}-alpine-1 Created
Container {folder-name}-ubuntu-1 Recreate
Container {folder-name}-ubuntu-1 Recreated
Container {folder-name}-alpine-1 Starting
Container {folder-name}-alpine-1 Started
Container {folder-name}-ubuntu-1 Starting
Container {folder-name}-ubuntu-1 Started
在这种情况下,我们需要添加no-deps
选项来明确告诉docker-compose
不要重新启动链接的容器:
$ docker-compose up -d --force-recreate --build --no-deps ubuntu
Container {folder-name}-ubuntu-1 Recreate
Container {folder-name}-ubuntu-1 Recreated
Container {folder-name}-ubuntu-1 Starting
Container {folder-name}-ubuntu-1 Started
5. 结论
在本教程中,我们了解了如何使用docker-compose
重建容器。
与往常一样,代码可在 GitHub 上获得。
译自:https://www.baeldung.com/rebuild-docker-container-compose/
译者:#公众号:进击云原生
本文由mdnice多平台发布