[英]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/example
( dne
在“不存在”中,但任何不是有效主機名的東西都可以工作),Docker 將永遠無法提取此圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.