docker compose 中 'image' 和 'build' 的区别

Difference between 'image' and 'build' within docker compose

请帮我理解 'image' 和 'build' 在 docker compose

中的区别
  • image 表示 docker compose 将 运行 基于该图像的容器
  • build 表示 docker compose 将首先基于在与构建关联的路径中找到的 Dockerfile 构建一个映像(然后 运行 基于该映像的容器)。

PR 2458 最终被合并以允许两者(并在构建时使用 image 作为图像名称,如果它存在的话)。

therobyouknow mentions :

dockerfile: as a sub-statement beneath build: can be used to specify the filename/path of the Dockerfile.

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

构建:需要docker文件路径作为参数,它会先构建一个镜像,然后使用该镜像创建一个容器。

图像:需要现有图像名称作为参数,它将使用该图像启动容器。

示例:docker-compose.yaml

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

service1会先根据当前路径的Dockerfile构建一个镜像,运行容器基于这个镜像

service2 将从 docker 中心下载 "redis:alpine" 图像,下载图像上的 运行 容器。