Пожалуйста, помогите мне понять разницу между "изображением" и "строить" в докере.
Разница между "изображением" и "строить" внутри докера
Ответ 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" из концентратора докеров и запустит контейнер для загруженного образа.