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

Hafiz

Ответов: 4

Ответы (4)

Докер cli используется при управлении отдельными контейнерами на движке докера. Это командная строка клиента для доступа к api демона докеров.

Команда docker-compose cli может использоваться для управления многоконтейнерным приложением. Он также перемещает многие параметры, которые вы вводите при выполнении docker run cli, в файл docker-compose.yml для упрощения повторного использования. Он работает как интерфейсный "скрипт" поверх того же docker api, который используется docker, поэтому вы можете делать все, что docker-compose делает с командами docker. и много сценариев оболочки. Подробнее см. в этой документации по docker-compose.


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

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

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

Подробнее о режиме роя см. документацию по режиму роя докеров.

docker или, более конкретно, docker engine используется, когда мы хотим обрабатывать только один контейнер, тогда как docker-compose используется, когда у нас есть несколько контейнеров для обработки. Нам понадобится несколько контейнеров, если у нас есть более одной службы, о которой нужно заботиться, например, у нас есть приложение, которое имеет модель клиент-сервер. Нам нужен контейнер для серверной модели и еще один контейнер для клиентской модели. Docker compose обычно требует, чтобы у каждого контейнера был собственный файл dockerfile, а затем - файл yml, включающий все контейнеры.

Dockerfile - это текстовый документ, содержащий все команды / инструкции, которые пользователь может вызвать в командной строке для сборки изображения.

Docker Compose - это инструмент для определения и запуска многоконтейнерных приложений Docker. В Compose вы используете файл YAML для настройки служб вашего приложения. Затем с помощью одной команды вы создаете и запускаете все службы из своей конфигурации. По умолчанию docker-compose ожидает имя файла Compose как docker-compose.yml или docker-compose.yaml. Если файл набора имеет другое имя, мы можем указать его с помощью флага -f.

Подробности здесь

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

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

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

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

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: {}

2022 WebDevInsider