image指令用于指定服务使用的镜像名称和标签,如nginx:1.25或myapp:dev;单独使用时不构建,仅拉取运行;与build联用时则为构建结果打标签。
在 Docker Compose 中,直接使用 image 指令指定一个已存在的镜像(如本地构建好的或从 Docker Hub 拉取的)是最简单、最常用的方式。它不触发构建过程,只负责拉取并运行该镜像。
image 字段用于声明服务要使用的镜像名称和标签,格式为 repository/name:tag。如果不写标签,默认为 latest。
image: nginx:1.25
image: myapp:dev(前提是已通过 docker build -t myapp:dev . 构建过)image: registry.example.com/team/app:v2.1
当同时存在 build 和 image 时,image 定义的是构建完成后要打上的镜像名和标签。Docker Compose 构建完会自动 docker tag 并保存为该名称。
web: build: ./web image: my-web-app:prod
docker-compose up --build 后,会基于 ./web 目录构建,并将结果标记为 my-web-app:prod
docker-compose up(不加 --build),就会直接使用这个已命名的镜像,跳过构建运行前建议手动检查镜像是否存在,避免启动失败:
docker images | grep myapp
docker build -t myapp:latest . 或 docker pull nginx:alpine
注意不要混淆 image 和 build 的职责:
image 单独存在 → 只拉取/运行,不构建build 单独存在 → 自动使用默认镜像名(如 project_service),不显式打标签build + image → 构建后打指定标签,利于复用和部署识别image: . 或 image: ./Dockerfile —— 这是无效写法,image 必须是合法镜像名