Red Hat Enterprise Linux 7 включает официальную поддержку для запуска контейнеров Docker, а Red Hat предлагает набор официальных образов Docker rhel. Интересной особенностью этих образов является то, что пакеты могут быть установлены через подписку Red Hat Network хоста без необходимости какой-либо настройки в контейнере.
Цитировать https://access.redhat.com/articles/881893#createimage :
«В текущем выпуске Red Hat Docker стандартный образ RHEL 7 Docker, который вы извлекаете из Red Hat, сможет использовать права RHEL 7, доступные из хост-системы. Таким образом, до тех пор, пока ваш хост Docker правильно подписан и репозитории Если вам необходимо получить необходимое программное обеспечение в вашем контейнере (и иметь доступ в Интернет с вашего хоста Docker), вы сможете устанавливать пакеты из репозиториев программного обеспечения RHEL 7. "
Я обеспокоен тем, что механизм, с помощью которого это достигается, довольно непрозрачен. Например, при запуске нового контейнера с образом rhel7.1 его можно запустить, yum install foo
даже не настроив переменные среды http proxy. Без понимания этого механизма системный администратор потенциально находится во власти неизвестных взаимодействий между хост-системой, демоном Docker и запущенными контейнерами. Это также говорит о том, что нормальная изоляция между хостом и контейнером каким-то образом нарушена (хотя и в мягкой форме).
Подчеркнем следующее: как достигается эта поддержка подписки и зависит ли она от пользовательской сборки демона Docker, предоставляемого Red Hat через сеть подписки?
Ответы:
Red Hat содержит патч,
docker
называемый патчем «секреты», который монтирует информацию о правах в контейнеры при запуске.Вы можете увидеть лучшее описание патча и ссылку на вышестоящий PR в репозитории Projectatomic / Docker :
https://github.com/projectatomic/docker/tree/docker-1.13.1-rhel#add-rhel-super-secrets-patchpatch
Обратите внимание, что вам нужно выбрать одну из веток (ссылка идет на ветку 'docker-1.3.1-rhel'), чтобы увидеть всю информацию о переносимых патчах.
источник
yum
командах внутри сборки Docker, или образ Docker потерпит неудачу?Зная, как лицензируются виртуальные машины, управляемые Red Hat Satellite, и, исходя из комментария @ Leynos, я ожидал, что есть нечто похожее
virt-who
, то есть служба, которая взаимодействует с хостом виртуализации (vSphere, KVM и т. Д.) И запрашивает его у найти детали виртуальных машин. Затем он выполняет необходимые вызовы API в Satellite, чтобы позволить виртуальной машине использовать лицензию центра обработки данных хоста.Я ожидаю, что демон докера Red Hat предоставляет нечто подобное, позволяя контейнеру узнать, что он работает с подписанного хоста Docker, и, следовательно, использовать эту подписку.
Также отсюда :
Таким образом, в контейнере или демоне есть что-то, что может запросить у хоста информацию о подписке (и, возможно, информацию о репо).
источник