如果您使用 Dockerfile 创建服务,您是否更喜欢使用 Dockerfile 构建映像并将其推送到注册表 - 而不是分发 Dockerfile(和 repo)以供人们构建他们的映像?
哪些用例支持 Dockerfile+repo 分发,哪些用例支持 Registry 分发?
如果您使用 Dockerfile 创建服务,您是否更喜欢使用 Dockerfile 构建映像并将其推送到注册表 - 而不是分发 Dockerfile(和 repo)以供人们构建他们的映像?
哪些用例支持 Dockerfile+repo 分发,哪些用例支持 Registry 分发?
我想同样的问题可以应用于源代码与二进制包安装。
推送到中央共享注册表允许您冻结和验证特定配置,然后将其提供给组织中的其他人。
在DevTable,我们最初使用的是在部署服务器时运行的 Dockerfile,以生成 Docker 映像。随着我们的 docker 镜像变得越来越复杂并且依赖项越来越多,从 Dockerfile 生成镜像的时间越来越长。我们真正需要的是一种方法来生成一次图像,然后将成品拉到我们的服务器上。
通常,可以通过将他们的图像推送到index.docker.io来实现这一点,但是我们拥有无法向全世界发布的专有代码。如果您打算围绕 Docker 构建托管产品,您也可能会遇到这种情况。
为了满足社区的这一需求,我们构建了Quay,旨在成为 Docker 镜像的Github。检查一下,让我们知道它是否能满足您的需求。
您自己的服务器上的私有存储库也是一种选择。
要运行服务器,请将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)
我认为这取决于您的应用程序,但我更喜欢Dockerfile:
这就是为什么我更喜欢 Dockerfile。与 Vagrantfile 相同 - 它更喜欢 Vagrantfile 而不是 VM 映像。ANT 或 Maven 脚本也是如此——它更喜欢构建脚本而不是打包的工件(至少如果我想为项目贡献代码)。