Когда я запускаю контейнер 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, у вас все равно будет установлена только одна копия базового образа. .