我正在尝试解决我认为的安全问题。如果我正在开发一个名为“example”的项目,我可以使用 docker build -t example 从中构建一个 docker 镜像,然后使用 docker run example 运行它。这将正常工作,但如果我忘记首先构建,或者如果我docker rmi
图像而不重建,那么docker将查询docker hub,并运行该图像。
我信任 docker hub 来获取我已经知道的图像(例如,我很高兴运行 docker run nginx 或 docker run postgres ),但是如果我忘记构建本地 Docker 镜像,我担心会意外运行任意远程镜像。
我知道我可以将本地镜像命名为深奥的名称,这样就不太可能发生冲突,但这感觉就像是默默无闻的安全感。
最佳答案
您不必将图像命名为深奥的名称。
使用命名空间
只需在 docker hub 上注册一个命名空间,然后在镜像名称中使用它即可。例如,我是 Docker Hub 上的 larsks
。除了我之外没有人可以在 larsks 命名空间中创建镜像,因此如果我将本地镜像命名为 larsks/example ,我知道这永远不会在 Docker Hub 上解决,除非我将它就在那里。
使用虚假的注册表名称
也许您不想注册 Docker Hub。
回想一下,镜像名称的完全限定形式是 registry/namespace/repository:tag
。如果您使用不存在的注册表命名本地镜像,Docker 将无法从任何地方提取它们。例如,如果我命名一些 dne/larsks/example
(dne
如“不存在”,但任何不是有效主机名的东西都可以工作),Docker 将永远不会能够拉出这个图像。
关于docker - 如果没有找到具有该名称的本地镜像,如何告诉 docker 从本地镜像创建容器,而不查看 docker hub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70733035/