Назад | Перейти на главную страницу

Как yum с подпиской Red Hat Network работает внутри образов Rhel Docker?

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-прокси. Не понимая этого механизма, системный администратор потенциально может зависеть от неизвестных взаимодействий между хост-системой, демоном 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), чтобы увидеть всю информацию о переносимых патчах.

Зная, как лицензируются виртуальные машины, управляемые Red Hat Satellite, и исходя из комментария @ Leynos, я ожидал, что есть что-то похожее на virt-who, который является службой, которая обращается к узлу виртуализации (vSphere, KVM и т. д.) и запрашивает его, чтобы найти сведения о виртуальных машинах. Затем он выполняет необходимые вызовы API в Satellite, чтобы виртуальная машина могла использовать лицензию центра обработки данных хоста.

Я ожидал, что демон докеров Red Hat предоставляет нечто подобное, позволяя контейнеру знать, что он работает с подписанного хоста Docker, и, следовательно, использовать эту подписку.

Также из Вот:

ВАЖНО: Запуск контейнеров с помощью команды docker, как описано в этом разделе, не требует от вас регистрации системы RHEL Atomic Host и присоединения подписки. Однако, если вы хотите запускать команды установки yum внутри контейнера, контейнер должен получить действительную информацию о подписке от RHEL Atomic Host, иначе произойдет сбой.

Итак, либо в контейнере, либо в демоне есть что-то, что может запрашивать хост, чтобы найти информацию о подписке (и, возможно, информацию о репо).