代码之家  ›  专栏  ›  技术社区  ›  Feiyu Zhou

是否可以将公共Docker映像存储在私有Docker注册表中

  •  1
  • Feiyu Zhou  · 技术社区  · 8 年前

    对于公司规则,我们的vm不能访问internet(也不能使用http代理)。我通过下载RPM包和Docker图片安装了Kubernetes集群,如下所示:

     k8s.gcr.io/kube-apiserver-amd64:v1.11.0
     k8s.gcr.io/kube-controller-manager-amd64:v1.11.0
     k8s.gcr.io/kube-scheduler-amd64:v1.11.0
     k8s.gcr.io/kube-proxy-amd64:v1.11.0 k8s.gcr.io/pause-amd64:3.1
     k8s.gcr.io/etcd-amd64:3.2.18 k8s.gcr.io/coredns:1.1.3
     quay.io/coreos/flannel:v0.10.0-amd64
    

    然后我安装RPM包并将这些docker映像加载到所有vm中。这可以成功地安装kubernetes,尽管它很辛苦。

    我的问题是,我可以使用一个私有的docker注册表来存储这些k8s.gcr.io、quay.io和其他公共注册表的映像,并且每个vm的docker.service可以像我的私有映像一样提取这些映像吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Konstantin Vustin    8 年前

    有几种解决方案:

    1. 由于您的计算机没有Internet连接,并且您希望使用相同的图像名称,因此您需要为它们提供Internet。它可以在任何代理服务器上完成,比如 squid 或者别的什么。在这种情况下,您需要重新配置 docker 让它在代理后工作
    2. 部署任何本地注册表解决方案(例如 Artifactory )然后把它当作镜子 码头工人

    附:我不是坚持要用 手工艺品 ,但可能非常方便。听着, 手工艺品 提供创建虚拟注册表的功能。你可以在这个虚拟的注册表下面添加另一个注册表(k8s.gcr.io,quay.io,随便什么),并将其用于 码头工人 后视镜。

        2
  •  1
  •   Brian Fitzpatrick    8 年前

    是的,你应该能够,只要你有一台连接到公共回购和私人回购的机器。你将图片从公共区域拉下来,贴上标签,然后用Docker Push推到你的回购协议。ex和ubuntu来自 https://blog.docker.com/2013/07/how-to-use-your-own-registry/

    # First, make sure you have the "ubuntu" repository:
    docker pull ubuntu
    
    # Then, find the image id that corresponds to the ubuntu repository
    docker images | grep ubuntu | grep latest
    ubuntu  latest  8dbd9e392a96  12 weeks ago  263 MB (virtual 263 MB)
    
    # Almost there!
    # Tag to create a repository with the full registry location.
    # The location becomes a permanent part of the repository name.
    docker tag 8dbd9e392a96 localhost.localdomain:5000/ubuntu
    
    # Finally, push the new repository to its home location.
    docker push localhost.localdomain:5000/ubuntu
    
    推荐文章