Пожалуйста, помогите мне понять разницу между "изображением" и "строить" в докере.
Разница между "изображением" и "строить" внутри докера
Ответ 1
-
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
Ответ 2
build: ожидает путь dockerfile в качестве аргумента, сначала он создаст образ, а затем использует его для создания контейнера.
image: ожидает существующее имя изображения в качестве аргумента, он запустит контейнер, используя это изображение.
Пример: Докер-compose.yaml
version: '3'
services:
service1:
build: .
ports:
- "5000:5000"
service2:
image: "redis:alpine"
service1 сначала создаст образ на основе Dockerfile текущего пути и запустит контейнер на основе этого образа.
service2 загрузит образ "redis: alpine" из концентратора докеров и запустит контейнер для загруженного образа.