繁体   English   中英

为什么我们只能将图像推送而不将docker-compose.yml推送到dockerhub

[英]Why can we only push images and no docker-compose.yml to dockerhub

为什么我们只能将映像放在Docker Hub上,而没有docker-compose文件。 我的意思是,有许多使用多个容器的应用程序可能是可重用的,也许只需进行一些配置即可。

还是有办法做到这一点? 现在,我将Docker Hub用于图像,并将git存储库用于撰写文件。 但是我觉得只有一个地方存储所有这些会更好。

因此,问题是,是否可以像存储映像那样存储docker-compose文件? 如果不是,是否有解释为什么Docker的人们认为这是一个坏主意? 最后,是否有一个docker-compose文件库? 我的意思是人们可以在docker hub上找到高质量的图像,但是我在github上找到的docker-compose文件并不十分可靠。

简短的回答:我认为这将被视为安全漏洞。

注册表服务器存储映像,而Docker Hub只是注册表服务器的一种实现。 docker-compose.yml文件是如何运行映像的定义。 如何运行该映像包括诸如卷挂载,要发布的端口,要禁用的命名空间之类的事情,每一项都有可能注入安全漏洞。 如果不是运行带有安全默认值的映像,而是运行带有未知安全设置的远程撰写文件,并使用由docker托管的文件,则将自己暴露给一个可能与docker关联的简单远程攻击媒介,比私人回购所有者。 因此,鉴于Docker对安全性的高度重视,我怀疑您会看到它们由他们托管。

在github存储库中包含Dockerfile和docker-compose.yml的标准方法是所有内容的传统单一位置。 docker hub注册表将成为映像的预构建缓存。 可以使用compose文件定义构建选项,并使用Dockerfile和其余的repo来重新创建,以定义创建映像所需的所有内容。 实际上, docker build命令允许您直接指向公共github存储库,而无需先在本地克隆它。

从理论上讲,可以将Docker组成的文件和Dockerfiles存储在源代码控制中,例如github。

首选映像的原因以及拥有Docker集线器的原因是因为映像是将应用程序和环境捆绑在一起的单元-这有助于确保应用程序在任何地方都能以相同的方式运行。

Dockerfile是构建映像的指令,但这样做有局限性。 从给定的映像中,只能进行这么多修改(请参阅此处的答案: Dockerfile中的命令数 )。

并不能完全保证其他人可以从Dockerfile / docker-compose脚本中构建具有相同行为的映像-依赖关系可能有所不同,程序包发生更改等。Docker映像应该是独立的,可测试的,并且会最有可能在连续使用中以相同的方式运行( 保证,但通常)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM