Где docker устанавливает зависимости? - PullRequest
2 голосов
/ 23 января 2020

Это вопрос новичка, но я начал изучать docker и как каждый контейнер изолирован от другого контейнера.

В примере на уроке видео показало, что замечательная вещь о docker в том, что мы можем игнорировать конфликты зависимостей, поэтому если у нас есть image A, для которого требуется dependency A v1.0 и image B, для которого требуется dependency A v2.0, то это так же просто, как указать его на изображении docker, и нам не нужно беспокоиться о конфликтах по поводу версий и еще много чего.

Теперь мои вопросы:

  1. Когда я запускаю контейнер docker, где устанавливаются эти зависимости? Если, например, на моем хост-компьютере нет dependency A, то когда я запускаю контейнер docker, который требует его, где он устанавливает его для запуска контейнера?

  2. Если он установлен, он изолирован только для этого docker контейнера? Если бы я хотел использовать dependency A на своем хост-компьютере, смогу ли я использовать установленную версию из контейнера docker или мне нужно было установить его снова на моем хост-компьютере?

  3. Зависимость установлена ​​несколько раз для docker контейнера? Если у меня есть 5 работающих контейнеров image A и 10 контейнеров image B, он не будет установлен dependency A v1.0 5 раз и dependency A v2.0 10 раз, верно?

1 Ответ

4 голосов
/ 23 января 2020

Когда я запускаю контейнер docker, где устанавливаются эти зависимости? Если, например, мой хост-компьютер не имеет зависимости A, то когда я запускаю контейнер docker, который требует его, где он устанавливает его для запуска контейнера?

Установленное программное обеспечение на вашем хост-компьютере не имеет никакого отношения к программному обеспечению, работающему внутри контейнера. Контейнер работает в изолированной файловой среде и не имеет доступа к вашему хосту. Если пакет, запущенный в контейнере, имеет зависимость, эта зависимость устанавливается , когда образ создается , а не при запуске контейнера, и зависимости устанавливаются в образ вместе со всем, что устанавливается явно.

Если он будет установлен, он будет изолирован только для этого docker контейнера? Если я захочу использовать зависимость A на моем хост-компьютере, смогу ли я использовать установленную версию из контейнера docker или мне придется установить ее снова на мой хост-компьютер?

As выше, ваши контейнеры изолированы от вашего хоста. Программное обеспечение на вашем хосте не сможет использовать зависимость, установленную в контейнере.

Зависимость установлена ​​несколько раз на docker контейнер? Если у меня есть 5 работающих контейнеров с изображением A и 10 контейнеров с изображением B, он не устанавливает зависимость A v1.0 5 раз и зависимость A v2.0 10 раз, верно?

Ничего «установлен» при запуске контейнера, кроме необходимого Docker образа, если он еще не был доступен на вашем хосте. То есть, когда вы docker run <something> ...:

  • Docker извлечете необходимое изображение, если оно еще не существует, а затем
  • Docker запустит контейнер из этого образа.

При установке образа произошла любая установка программного обеспечения.

Если у вас есть 5 запущенных контейнеров образа A, у вас все равно будет установлена ​​только одна копия базового образа. .

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