docker-compose против создания и запуска образа - PullRequest
0 голосов
/ 27 марта 2019

Я новичок в докере и пытаюсь понять, что лучше для моего проекта (веб-приложение).

Пока я понимаю, что могу либо:

  • использовать docker-compose up -d чтобы запустить контейнер, определенный набором правил в docker-compose.yaml
  • , создать изображение из файла Docker, а затем создать контейнер из этого изображения

Если я правильно понимаю, docker-compose up -d позволяет мне (через volumes) монтировать файлы (например, мое приложение) в контейнер.Однако, если я создаю образ, я могу встроить в него свое приложение (с инструкциями Dockerfile и COPY).

Правильно ли мое понимание?Как выбрать между этими двумя вариантами?

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

Docker Compose - это просто удобная оболочка для команды docker.

Все, что вы можете делать в docker compose, вы можете делать прямо с запуском docker.

Например, эти докерыКоманды:

$ docker build -t temp .
$ docker run -i -p 3000:80 -v $PWD/public:/docroot/ temp

аналогичны наличию этого файла создания Docker:

version: '3'

services:
  web:
    build: .
    image: temp
    ports: ["3000:80"]
    volumes:
    - ./public:/docroot

и выполнению:

$ docker-compose up web

Хотя преимущества создания Docker наиболее очевидны при использованиинесколько контейнеров, его также можно использовать для запуска одного контейнера.

Мой совет: начинайте без создания докера, чтобы понять, как создать простой образ и как его запустить с помощью dockerкомандная строка.Когда вы почувствуете себя комфортно с этим, взгляните на docker compose.

Что касается наилучшей практики в отношении копирования файлов в контейнер или их монтирования - ответ будет и , ивот почему:

Когда вы находитесь в режиме разработки, вы не хотите создавать образ при каждом изменении кода.Именно здесь в игру вступает крепление громкости.Однако ваш окончательный образ докера должен содержать ваш код, чтобы его можно было развернуть где-нибудь еще.В конце концов, именно поэтому мы используем контейнеры правильно?Вот тут-то и вступает в игру COPY.

Наконец, помните, что когда вы монтируете том в контейнер, он будет «затенять» содержимое этой папки в контейнере - это как использовать оба монтированияи COPY фактически работает так, как вы ожидаете.

1 голос
/ 27 марта 2019

Docker-compose - это просто контейнерный оркестратор.Я просто предоставляю вам простой способ создания нескольких связанных контейнеров.Отношения между контейнерами могут быть томами, сетями, порядком запуска, переменными среды и т. Д.

В фоновом режиме docker-compose использует обычный docker.Таким образом, все, что вы можете сделать с помощью docker-compose (монтирование томов, использование пользовательских сетей, масштабирование), может быть выполнено с помощью команд docker (но, конечно, сложнее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...