![yum 與紅帽網路訂閱如何在 rhel Docker 映像中運作?](https://rvso.com/image/668786/yum%20%E8%88%87%E7%B4%85%E5%B8%BD%E7%B6%B2%E8%B7%AF%E8%A8%82%E9%96%B1%E5%A6%82%E4%BD%95%E5%9C%A8%20rhel%20Docker%20%E6%98%A0%E5%83%8F%E4%B8%AD%E9%81%8B%E4%BD%9C%EF%BC%9F.png)
Red Hat Enterprise Linux 7 包含對運行 Docker 容器的官方支持,而 Red Hat 提供了一組官方 rhel Docker 映像。這些鏡像的一個有趣的功能是,可以透過主機的 Red Hat Network Subscription 安裝軟體包,而無需在容器內執行任何配置。
去引用https://access.redhat.com/articles/881893#createimage:
「對於目前的 Red Hat Docker 版本,您從 Red Hat 取得的預設 RHEL 7 Docker 映像將能夠利用主機系統提供的 RHEL 7 權利。因此,只要您的 Docker 主機已正確訂閱並且儲存庫已正確訂閱,如果您需要在容器中取得所需的軟體(並且可以從Docker 主機存取網際網路),那麼您應該能夠從RHEL 7 軟體儲存庫安裝軟體包。
我擔心的是實現這一目標的機制相當不透明。例如,當使用 rhel7.1 映像啟動新容器時,yum install foo
甚至無需配置 http 代理環境變數即可運行。如果不了解這種機制,系統管理員可能會受到主機系統、Docker 守護程序和正在運行的容器之間未知互動的影響。這也表明主機和容器之間的正常隔離在某種程度上受到了損害(儘管是良性的方式)。
重點說一下:這種訂閱支援是如何實現的?
答案1
紅帽帶有一個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 等)對話並查詢它的服務查找VM的詳細資訊。然後,它在 Satellite 中執行必要的 API 調用,以允許虛擬機器使用主機的資料中心許可證。
我希望 Red Hat docker 守護程式提供類似的功能,讓容器知道它是從訂閱的 Docker 主機運行,從而利用該訂閱。
也來自這裡:
重要提示:如本主題所述,使用 docker 命令執行容器並不特別要求您註冊 RHEL Atomic Host 系統並附加訂閱。但是,如果要在容器內執行 yum install 命令,容器必須從 RHEL Atomic Host 獲取有效的訂閱訊息,否則將會失敗。
因此,容器或守護程序中有些東西可以查詢主機以查找訂閱資訊(也可能還有儲存庫資訊)。