我正在嘗試解決我認為的安全問題。如果我正在處理一個我稱之為“示例”的專案,我可以使用 構建一個 docker 映像docker build -t example .,然后使用docker run example. 這將正常作業,但如果我忘記先構建,或者如果我docker rmi沒有重建影像,那么 docker 將查詢 docker hub,并運行該影像。
對于我已經知道的影像,我信任 docker hub(例如,我很樂意運行docker run nginxor docker run postgres),但是如果我忘記構建本地 docker 影像,我擔心會意外運行任意遠程影像。
我知道我可以為我的本地影像命名一些深奧的東西,這樣就不太可能發生沖突,但這感覺就像默默無聞的安全。
uj5u.com熱心網友回復:
使用您控制的注冊表或存盤庫命名您的影像。換句話說,不要運行:
docker build -t example .
因為它會擴展為您無法控制的 Docker 官方映像存盤庫(又名 docker.io/library/)。但是您可以在 Hub 上創建自己的用戶帳戶,從而可以:
docker build -t ${your_hub_id}/example .
因此,任何本地不存在的影像都會嘗試從 Hub 上的命名空間中提取。
uj5u.com熱心網友回復:
你不必為你的影像命名一些深奧的東西。
使用命名空間
只需在 docker hub 上注冊一個命名空間,然后在您的影像名稱中使用它。例如,我larsks在 Docker Hub 上。除了我之外,沒有人可以在命名空間中創建影像larsks,所以如果我命名一個本地影像larsks/example,我知道除非我把它放在那里,否則它永遠不會在 Docker Hub 上解決。
使用虛假的注冊表名稱
也許你不想注冊 Docker Hub。
回想一下,影像名稱的完全限定形式是registry/namespace/repository:tag. 如果您使用不存在的注冊表命名本地映像,Docker 將無法從任何地方拉取它們。例如,如果我命名某些東西dne/larsks/example(dne如“不存在”,但任何不是有效主機名的東西都可以作業),Docker 將永遠無法提取此影像。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412682.html
標籤:
