docker组合中'image'和'build'之间的区别

时间:2015-12-16 15:35:55

标签: docker dockerfile docker-compose docker-registry

请帮助我理解docker compose中“图像”和“构建”之间的区别

2 个答案:

答案 0 :(得分:25)

  • image表示docker compose将根据该图片运行容器
  • build表示docker compose将首先根据与构建相关联的路径中找到的Dockerfile构建图像(然后根据该图像运行容器)。

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

therobyouknow提及in the comments

  

dockerfile:作为build:下的子语句可用于指定Dockerfile的文件名/路径。

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

答案 1 :(得分:0)

build:期望将dockerfile路径作为参数,它将首先构建映像,然后使用该映像创建容器。

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

示例:docker-compose.yaml

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

service1将首先基于当前路径的Dockerfile构建一个映像,然后基于该映像运行容器。

service2将从docker hub下载“ redis:alpine”映像,并在下载的映像上运行容器。