В чем разница между docker и docker-compose

237

dockerи, docker-composeкажется, взаимодействует с одним и тем же dockerFile, в чем разница между этими двумя инструментами?

Хафиз
источник

Ответы:

270

dockerCLI используется при управлении отдельными контейнерами на DOCKER двигателе. Это командная строка клиента для доступа к API-интерфейсу Docker.

docker-composeКли может быть использован для управления многофункциональным приложением контейнера. Он также перемещает многие параметры, которые вы вводите docker runв docker-compose.ymlфайл, для облегчения повторного использования. Он работает как «скрипт» внешнего интерфейса поверх того же API-интерфейса докера docker, так что вы можете делать все, что docker-composeделает с dockerкомандами и множеством сценариев оболочки. Смотрите эту документацию по docker-compose для более подробной информации.


Обновление для режима Swarm

С тех пор, как этот ответ был опубликован, docker добавил второе использование файлов docker-compose.yml. Начиная с версии yml формата 3 и докера 1.13, вы можете использовать yml с docker-compose, а также определять стек в режиме роя докера. Чтобы сделать последнее, вам нужно использовать docker stack deploy -c docker-compose.yml $stack_nameвместо, docker-compose upа затем управлять стеком с помощью dockerкоманд вместо docker-composeкоманд. Отображение один на один между двумя видами использования:

  • Compose Project -> Swarm Stack: группа услуг для определенной цели
  • Compose Service -> Swarm Service: один образ и его конфигурация, возможно, в увеличенном масштабе.
  • Compose Container -> Swarm Task: один контейнер в службе

Для получения дополнительной информации о режиме роя см . Документацию по режиму роя докера .

BMitch
источник
76

docker управляет отдельными контейнерами

docker-compose управляет несколькими контейнерными приложениями

Использование docker-compose требует 3 шага:

  1. Определите среду приложения с помощью Dockerfile
  2. Определите сервисы приложения в docker-compose.yml
  3. Запустить, docker-compose upчтобы запустить и запустить приложение

докер-сочинять

Ниже приведен пример docker-compose.yml, взятый из документации docker :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
JSON C11
источник
3
Для ясности, линия build: .в webразделе указывает на местоположение Dockerfile, созданного на шаге 1.
AndrewGentry