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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章