docker - 是否可以将公共(public) docker 镜像存储在私有(private) docker 注册表中

标签 docker kubernetes

根据公司规定,我们的虚拟机不能访问互联网(也不能使用 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,虽然它很辛苦。

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

最佳答案

有几种解决方案:

  • 由于您的机器没有互联网连接,并且您希望使用相同的图像名称 - 您需要为它们提供互联网。它可以通过任何代理服务器完成,例如 squid或者是其他东西。在这种情况下,您需要重新配置 docker让它在代理后面工作
  • 部署任何本地注册表解决方案(例如 Artifactory ),然后将其用作 docker 的镜像

  • P.S:我不坚持使用Artifactory ,但它可能非常方便。看,Artifactory提供创建虚拟注册表的能力。您可以在此虚拟“下”聚合另一个注册表(k8s.gcr.io、quay.io 等)并将其用于 docker后照镜子。

    关于docker - 是否可以将公共(public) docker 镜像存储在私有(private) docker 注册表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296751/

    相关文章:

    docker - 有没有办法使docker容器识别更新的证书并重新启动其过程?

    docker - 在 docker 上运行的进程是否应该对外部操作系统可见?

    Docker swam 模式 - --advertise-addr 和 --listen-addr 之间有什么区别?

    docker - 使用 Visual Studio 将 Docker 镜像发布到 GitLab 容器注册表时遇到问题

    redis - 带有 Redis 的 Kubernetes 配置映射

    logging - 如何将 kubernetes 中所有 pod 的日志存储在 Node 上的一处?

    azure - 在 Azure AKS 中运行 Docker Windows 容器时获取 'didn' t 匹配节点选择器

    spring-boot - Kubernetes 上的 Memcache

    python - Dockerized Django 无法连接到 MySQL

    kubernetes - 将Kubernetes的docker run转换为YAML