在 Docker Compose 中重建 Docker 容器
瀏覽人數:1,233最近更新:
一、概述
在本教程中,我們將看到如何使用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國際》許可協議