Red Hat Enterprise Linux 7 включает официальную поддержку для запуска контейнеров Docker, а Red Hat предлагает набор официальных образов rhel Docker. Интересной особенностью этих образов является то, что пакеты могут быть установлены через подписку 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 через сеть подписки?
решение1
Red Hat предлагает патч, docker
называемый «секретным», который монтирует информацию о правах доступа в контейнеры при их запуске.
Более подробное описание патча и ссылку на PR выше можно увидеть впроектатомный/докеррепо:
https://github.com/projectatomic/docker/tree/docker-1.13.1-rhel#add-rhel-super-secrets-patchpatch
Обратите внимание: вам нужно будет выбрать одну из веток (ссылка ведет на ветку «docker-1.3.1-rhel»), чтобы увидеть всю информацию о внесенных исправлениях.
решение2
Зная, как лицензируются виртуальные машины, управляемые Red Hat Satellite, и исходя из комментария @Leynos, я бы ожидал, что есть что-то похожее на virt-who
, что является службой, которая общается с хостом виртуализации (vSphere, KVM и т. д.) и запрашивает у него сведения о виртуальных машинах. Затем он выполняет необходимые вызовы API в Satellite, чтобы позволить виртуальной машине использовать лицензию центра обработки данных хоста.
Я ожидаю, что демон Red Hat Docker предоставляет нечто подобное, позволяя контейнеру узнать, что он запущен с подписанного хоста Docker, и, следовательно, использовать эту подписку.
Также изздесь:
ВАЖНО: Запуск контейнеров с помощью команды docker, как описано в этой теме, не требует регистрации системы RHEL Atomic Host и присоединения подписки. Однако, если вы хотите запустить команды yum install в контейнере, контейнер должен получить действительную информацию о подписке от RHEL Atomic Host, иначе он потерпит неудачу.
Итак, либо в контейнере, либо в демоне есть что-то, что может запросить хост, чтобы найти информацию о подписке (и, вероятно, также информацию о репозитории).