在 Docker Compose 中重建 Docker 容器
瀏覽人數:1,117最近更新:
一、概述
在本教程中,我們將看到如何使用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
命令就可以了。我們將在啟動容器之前添加build
選項來構建鏡像。我們還將添加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 上獲得。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議