如果您正在使用Dockerfile进行服务,您是否更喜欢使用Dockerfile构建映像并将其推送到注册表 - 而不是分发Dockerfile(和repo)以供人们构建其映像?
哪些用例支持Dockerfile + repo发布,以及哪些用例支持Registry发布?
答案 0 :(得分:10)
我认为同样的问题可以应用于源代码与二进制包安装。
通过推送到中央共享注册表,您可以冻结并验证特定配置,然后将其提供给组织中的其他人。
答案 1 :(得分:4)
在DevTable,我们最初使用的是在部署服务器时运行的Dockerfile,以便生成我们的Docker镜像。随着我们的docker镜像变得更加复杂并具有更多依赖性,从Dockerfile生成图像需要更长的时间。我们真正需要的是一种生成图像然后将成品拉到我们服务器的方法。
通常,人们可以通过将图像推送到index.docker.io来实现这一目标,但是我们拥有的专有代码无法向全世界发布。如果您计划围绕Docker构建托管产品,也可能会遇到这种情况。
为了满足社区的这种需求,我们构建了Quay,其目标是成为Docker镜像的Github。检查一下,如果它解决了你的需要,请告诉我们。
答案 2 :(得分:3)
您自己服务器上的私有存储库也是一种选择。
要运行服务器,请将https://github.com/dotcloud/docker-registry克隆到您自己的服务器。
要使用您自己的服务器,请在标记前加上注册表主机的地址。例如:
# Tag to create a repository with the full registry location.
# The location (e.g. localhost.localdomain:5000) becomes
# a permanent part of the repository name
$ sudo docker tag 0u812deadbeef your_server.example.com:5000/repo_name
# Push the new repository to its home location on your server
$ sudo docker push your_server.example.com:5000/repo_name
(见http://docs.docker.io.s3-website-us-west-2.amazonaws.com/use/workingwithrepository/#private-registry)
答案 3 :(得分:3)
我认为这取决于您的应用程序,但我更喜欢 Dockerfile :
这就是我更喜欢Dockerfile的原因。它与Vagrant文件相同 - 它更喜欢Vagrantfile而不是VM镜像。它与ANT或Maven脚本相同 - 它更喜欢构建脚本而不是打包的工件(至少如果我想为项目贡献代码)。