webdevqa.jp.net

docker compose内の「イメージ」と「ビルド」の違い

Docker compose内の「イメージ」と「ビルド」の違いを理解してください

31
meallhour
  • image は、docker composeがそのイメージに基づいてコンテナを実行することを意味します
  • build は、docker composeが最初に、ビルドに関連付けられたパスで見つかったDockerfileに基づいてイメージをビルドする(次に、そのイメージに基づいてコンテナーを実行する)ことを意味します。

PR 2458 は、最終的に両方を許可するようにマージされました(そして、存在する場合は、ビルド時にimageをイメージ名として使用します)。

therobyouknow 言及 コメント内

dockerfile:の下のサブステートメントとしてbuild:を使用して、Dockerfileのファイル名/パスを指定できます。

version: '3'
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
25
VonC

ビルド:引数としてdockerfileパスを想定しています。最初にイメージをビルドしてから、そのイメージを使用してコンテナーを作成します。

image:引数として既存のイメージ名が必要です。このイメージを使用してコンテナーを起動します。

例:docker-compose.yaml

version: '3'
services:
  service1:
    build: .
    ports:
      - "5000:5000"
  service2:
    image: "redis:Alpine"

service1は、まず現在のパスのDockerfileに基づいてイメージを構築し、このイメージに基づいてコンテナーを実行します。

service2は、Dockerハブから「redis:Alpine」イメージをダウンロードし、ダウンロードしたイメージでコンテナーを実行します。

1
Shahid Hussain