Подтвердить что ты не робот

Разница между сервисом и контейнером в докере

Я прошел через volumes_from вариант в docker compose. Очевидно, вы можете импортировать тома из контейнера или службы. Из документации для докеров написано:

volumes_from

Установите все тома из другой службы или контейнера, необязательно указывая доступ только для чтения (ro) или чтение-запись (rw).

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

Примечание. Контейнер:... форматы поддерживаются только в версии 2 формат файла. В версии 1 вы можете использовать имена контейнеров без маркировки они как таковые:

- service_name
- service_name:ro
- container_name
- container_name:rw

Я здесь смущен, в чем разница между контейнерами и услугами здесь?

4b9b3361

Ответ 1

Службы и контейнер связаны друг с другом, но оба они разные.

Услуга может выполняться одним или несколькими контейнерами. С помощью docker вы можете обрабатывать контейнеры, а с помощью docker-compose вы можете обрабатывать сервисы.

Например:

Скажем, что у нас есть этот файл docker-compose.yml:

web:
  image: example/my_web_app:latest
  expose:
    - 80
  links:
    - db 

db:
  image: postgres:latest

Этот составный файл определяет две службы: web и db.

Когда вы запустите docker-compose up, считая, что каталог проекта test1, тогда compose запустит 2 контейнера с именем myapp_db_1 и myapp_web_1.

$ docker ps -a
CONTAINER ID   IMAGE        COMMAND          ...      NAMES
1c1683e871dc   test1_web    "nginx -g"       ...      test1_web_1
a41360558f96   test1_db     "postgres -d"    ...      test1_db_1

Итак, в этом пункте у вас есть 2 службы и 1 контейнер для каждого.

Но вы можете масштабировать службу с именем web для использования 5 контейнеров.

$ docker-compose scale web=5
Creating and starting 2 ... done
Creating and starting 3 ... done
Creating and starting 4 ... done
Creating and starting 5 ... done

В этом пункте у вас есть 2 службы и 6 контейнеров

$ docker ps -a  
CONTAINER ID   IMAGE        COMMAND         ...      NAMES
1bf4c939263f   test1_web    "nginx -g"      ...      test1_web_3
d3033964a44b   test1_web    "nginx -g"      ...      test1_web_4
649bbda4d0b0   test1_web    "nginx -g"      ...      test1_web_5
a265ea406727   test1_web    "nginx -g"      ...      test1_web_2
1c1683e871dc   test1_web    "nginx -g"      ...      test1_web_1
a41360558f96   test1_db     "postgres -d'   ...      test1_db_1

Кроме того, с помощью docker-compose вы можете запускать подкоманду против одной или нескольких служб.

$docker-compose stop web

Ответ 2

Я не могу полностью ответить на ваш вопрос, так как сам не разбираюсь в самих сервисах. Тем не менее, я действительно понимаю тома_от относительно контейнеров, и поэтому это ответит наполовину на ваш вопрос:) Частичный ответ лучше, чем никто?

КОНТЕЙНЕР A

volumes: /my/shared/directory
container_name:ca

КОНТЕЙНЕР B

volumes_from:ca

Теперь контейнер B будет иметь новый каталог в каталоге /my/shared/, который монтируется из контейнера A - содержимое каталога в контейнере B будет точно таким же, как содержимое каталога в контейнере A

если вы узнаете о сервисах plz, сообщите мне