当前位置: 首页 > 知识库问答 >
问题:

OpenShift docker注册表无法从registry-1.docker.io中提取图像

巫化
2023-03-14

我正在使用OpenShift版本:

oc v3.10.0+dd10d17
kubernetes v1.10.0+b81c8f8
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://127.0.0.1:8443
openshift v3.10.0+e3465d0-44
kubernetes v1.10.0+b81c8f8

我的docker版本是:

Client:
  Version:           18.06.1-ce
  API version:       1.38
  Go version:        go1.10.3
  Git commit:        e68fc7a
  Built:             Tue Aug 21 17:24:56 2018
  OS/Arch:           linux/amd64
  Experimental:      false

Server:
  Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:23:21 2018
  OS/Arch:          linux/amd64
  Experimental:     false

要在我的计算机上启动本地OpenShift群集,我执行了以下步骤:https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md#linux

我想部署一个Redis实例,由于没有默认的Redis模板(有20个默认模板),我从URL将其加载为JSON模板:https://github.com/openshift/origin/blob/master/examples/db-templates/redis-ephemeral-template.json

从此模板创建应用程序时,Redis 容器无法启动并发出以下错误信号:

无法提取图像" 172 . 30 . 1 . 1:5000/open shift/redis @ sha 256:0 cf 7163 e 0589 baab 918 B1 d 70 CD 1 ed 4 c 711 e 2430 c 618 c 672 b 9121 f1 FD 35 cf 562 a ":RPC错误:代码=未知desc =来自守护程序的错误响应:未知:无法从docker.io/centos/redis-32-centos7:latest:获取https://registry-1.docker.io/v2/:网络/http:请求在等待连接时被取消(客户端。等待标题时超时)

当我通过提供docker映像openshiftroadShow/parksmap-katacda: 1.0.0来部署应用程序时,它正在被成功拉取和部署。

我已经登录到在 172.30.1.1:5000 发布的容器,该容器托管 OpenShift 的 docker 注册表,解析 registry-1.docker.io 域显然存在问题:

bash-4.2$ nslookup registry-1.docker.io
;; connection timed out; no servers could be reached

如果我指定< code>8.8.8.8 DNS,一切正常:

bash-4.2$ nslookup registry-1.docker.io 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   registry-1.docker.io
Address: 52.22.67.152
....

所以我查看了 /etc/resolv.conf 文件,这是它的内容:

bash-4.2$ cat /etc/resolv.conf 
nameserver 172.30.0.2
search default.svc.cluster.local svc.cluster.local cluster.local home
options ndots:5

我的问题是:

  1. OpenShift是否使用了一些内部DNS解决方案?如果是这样,我应该调整其配置吗?
  2. 谁(以及在哪里)负责配置 resolv.conf 文件的内容?
  3. 我使用的 Redis 模板有什么问题吗?
  4. 逐个添加缺少的模板是否是一种好习惯,是否可以一次添加一大堆缺少的有用模板?
  5. 应该怎么做才能使我的示例正常工作?

我将非常感谢你的帮助和时间!

共有1个答案

谭奕
2023-03-14

第行的模板:

  • https://github.com/openshift/origin/blob/master/examples/db-templates/redis-ephemeral-template.json#L196

有:

    {
        "description": "The OpenShift Namespace where the ImageStream resides.",
        "displayName": "Namespace",
        "name": "NAMESPACE",
        "value": "openshift"
    },

并在以下位置使用< code >命名空间值:

  • https://github.com/openshift/origin/blob/master/examples/db-templates/redis-ephemeral-template.json#L170

使用:

                        "from": {
                            "kind": "ImageStreamTag",
                            "name": "redis:${REDIS_VERSION}",
                            "namespace": "${NAMESPACE}"
                        },

因此,默认情况下,模板期望redis图像的ImageStream位于openShift项目中。此模板本身通常通过以下方式加载到openShift项目中:

  • https://github.com/openshift/origin/blob/master/examples/image-streams/image-streams-centos7.json

在创建时已加载到openshift集群中。

因此,使用以下命令检查< code>redis图像的图像流定义是否确实加载到了< code>openshift项目中:

oc get is/redis -n openshift --as system:admin

或者:

oc login -u system:admin
oc get is/redis -n openshift

这取决于 oc 群集 up 的设置方式。默认情况下,第一个可能不起作用。

因此,请先确定 redis 的图像流是否存在。

 类似资料:
  • 问题内容: 我的Ubuntu 16.4服务器上运行了docker守护程序 我的服务器详细信息: 没有可用的LSB模块。发行者ID:Ubuntu说明:Ubuntu 17.04版本:17.04代号:zesty 我收到以下错误: 我设置了http_proxy和https_proxy,因为我位于公司代理/防火墙的后面 有什么线索可以解决这个问题吗? 问题答案: 您还需要使用环境变量来设置Docker守护程

  • 问题内容: 我已经建立了一个4节点kubernetes集群,该集群运行都在CoreOS上运行的多容器Pod。这些图像来自公共和私人存储库。现在,我必须登录到每个节点,并在每次更新图像时手动下拉图像。我希望能够自动将其拉出。 我试过在每台服务器上运行docker登录并将.dockercfg文件放在/ root和/ core中 我也使用.docker / config.json完成了上述操作 我已将密

  • 问题内容: 我正在启动我的第一个Node.js服务器。我正在尝试遵循Node.js中的教程。 安装完Node.js并执行后,下一条指令是通过运行启动服务器,这将产生以下错误: 似乎它需要一个名为express的模块,因此我环顾四周,找到了可以解决此问题的命令。但是,出现以下错误: 问题答案: 对于以前跑步的人来说,似乎可以解决该问题

  • 我的笔记本电脑上安装了ubuntu。 我启动了一个私有docker注册表(支持ssl的htpasswd安全),并将其添加到覆盖网络上(因此可以从其他主机/虚拟机访问) 以下是代码(docker-compose.yaml): 因此,我的注册表正在以下链接中运行(通过dns,我可以在浏览器中进行验证):https://home-thinkpad-t420s:5000/v2/_catalog 现在我在笔

  • 我有两个图像tar-ed。现在,我docker加载-我把它们每个都加载到注册表中,所以它看起来像是bellow、mongo和cloud_docker_应用程序。 在yaml的帮助下,很容易正确运行mongo——因此我想我可以说我是正确的docker登录,因为正如文件所示,mongo图像可以被成功地提取。 我曾尝试https://kubernetes.io/docs/tasks/configure-

  • 当我尝试使用yaml文件创建POD时,我无法从本地docker注册表中提取图像。以下是所采取的诊断步骤: 错误msg:拉取图像时出错:获取http://localhost:5001/v1/repositories/hello_world_application/images:拨号tcp[::1]:5001:getsockopt:连接被拒绝 存储库标记图像ID创建的大小 img_app最新259dc