在 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多平臺發佈