簡體   English   中英

如果沒有找到具有該名稱的本地映像,我如何告訴 docker 從本地映像創建容器,而不查看 docker 集線器?

[英]How can I tell docker to create a container from a local image, without looking at the docker hub if no local image is found with that name?

我正在嘗試解決我認為的安全問題。 如果我正在處理一個我稱之為“示例”的項目,我可以使用docker build -t example. ,然后使用docker run example運行它。 這將正常工作,但如果我忘記先構建,或者如果我docker rmi沒有重建圖像,那么 docker 將查詢 docker 集線器,並運行該圖像。

I trust docker hub for images that I'm already aware of (I'm happy to run docker run nginx or docker run postgres , for example), but I'm worried about accidentally running arbitrary remote images if I forget to build my local docker 圖像。

我知道我可以為我的本地圖像命名一些深奧的東西,這樣就不太可能發生沖突,但這感覺就像默默無聞的安全。

使用您控制的注冊表或存儲庫命名您的圖像。 換句話說,不要運行:

docker build -t example .

因為它會擴展到您無法控制的 Docker 官方圖像存儲庫(又名 docker.io/library/)。 但是您可以在 Hub 上創建自己的用戶帳戶,從而可以:

docker build -t ${your_hub_id}/example .

因此,任何本地不存在的圖像都會嘗試從 Hub 上的命名空間中提取。

你不必為你的圖像命名一些深奧的東西。

使用命名空間

只需在 docker 集線器上注冊一個命名空間,然后在您的圖像名稱中使用它。 例如,我是larsks集線器上的 larsks。 除了我之外,沒有人可以在larsks命名空間中創建圖像,所以如果我將本地圖像命名為larsks/example ,我知道除非我把它放在那里,否則它永遠不會在 Docker Hub 上解決。

使用虛假的注冊表名稱

也許您不想注冊 Docker Hub。

回想一下,圖像名稱的完全限定形式是registry/namespace/repository:tag 如果您使用不存在的注冊表命名本地映像,Docker 將無法從任何地方拉取它們。 例如,如果我將某些東西命名為dne/larsks/exampledne在“不存在”中,但任何不是有效主機名的東西都可以工作),Docker 將永遠無法提取此圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM