Docker утверждает, что контейнеры, построенные с ним, более переносимы, чем чистые контейнеры LXC. Я думаю, я понимаю, что существуют некоторые соглашения и автоматизация конфигурации LXC, например, для имени хоста и конфигурации сети. Но есть ли нечто большее?Почему Docker утверждает, что его контейнер является портативным?
ответ
Если вы берете контейнер LXC (и его конфигурационный файл), он будет переносимым, только если вы запустите его на хосте с той же сетевой конфигурацией; то есть моста с тем же именем, одного и того же сетевого диапазона, одного и того же адреса маршрутизатора и одного и того же DNS-сервера.
Кроме того, если контейнер предоставляет услуги, вам необходимо будет установить сетевые правила (или что-то подобное) для доступа к этим услугам. С Docker существует согласованный синтаксис для выражения «yup, я хочу выставить порт 8000 этого контейнера», а затем «эй, какой публичный порт был выделен для порта этого контейнера 8000?»
Docker также адаптирует конфигурационный файл LXC в зависимости от локальных возможностей (например, предстоящий патч будет включать защиту apparmor, если он доступен).