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

10

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 через сеть подписки?

Leynos
источник
3
access.redhat.com/solutions/1314663
Майкл Хэмптон
Спасибо @ Майкл. К сожалению, у меня нет доступа к ответу, опубликованному на этом сайте, поскольку у меня лично нет учетной записи Red Hat Subscription. (Используемая моим работодателем учетная запись хранится сотрудниками в других частях организации). Я посмотрю, сможет ли кто-нибудь с соответствующим доступом в организации предоставить мне копию этого ответа в КБ.
Лейнос
@ Майкл, ты должен опубликовать свой комментарий как ответ imho.
Брэм
@MichaelHampton У меня была возможность прочитать ответ на сайте Red Hat. Может быть, стоит отметить в любом ответе, опубликованном здесь, что рассматриваемая функциональность зависит от пользовательской версии Red Hat демона Docker.
Лейнос

Ответы:

4

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'), чтобы увидеть всю информацию о переносимых патчах.

rageear
источник
И поэтому, если вы используете попытку Docker CE (у которой нет этого пути), а не Docker, предоставленный Red Hat, у вас не будет информации о правах и yumкомандах внутри сборки Docker, или образ Docker потерпит неудачу?
Raedwald
2

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

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

Также отсюда :

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

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

shearn89
источник