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



根据公司规则,我们的虚拟机不能访问互联网(也不能使用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映像加载到所有虚拟机中。这可以成功安装kubernetes,尽管这很难。

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

有几种解决方案:

  1. 由于您的机器没有互联网连接,并且您希望使用相同的图像名称,因此您需要为它们提供互联网。它可以用任何PROXY服务器来完成,比如squid或其他什么。在这种情况下,您需要重新配置docker,使其在代理之后工作
  2. 部署任何本地注册表解决方案(例如Artifactory(,然后将其用作docker的镜像

p.S:我并不坚持使用Artifactory,但它可能非常方便。看,Artifactory提供了创建虚拟注册表的能力。您可以在此虚拟注册表下"协定"另一个注册表(k8s.gcr.io、quay.io等(,然后将其用于docker镜像。

是的,你应该能够,只要你有一台机器连接到公共回购和私人回购。您可以将图像从公共位置拉下来,标记它,然后使用docker推送将其推送到您的回购中。ex与来自的ubuntuhttps://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

最新更新