AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1055573
Accepted
Blake Simmons
Blake Simmons
Asked: 2021-03-02 13:36:34 +0800 CST2021-03-02 13:36:34 +0800 CST 2021-03-02 13:36:34 +0800 CST

为什么我的 docker 注册表拒绝来自本地网络中的虚拟机而不是主机的连接?

  • 772

对于上下文 - 我正在尝试在气隙环境中部署 OKD,这需要镜像镜像注册表。然后,在安装过程中,网络中的其他机器会从这个私有、安全的注册表中提取。

描述环境 - 运行注册表容器的主机正在运行 Centos 7.6。其他机器都是使用 libvirt 运行 Fedora coreOS 的虚拟机。虚拟机和主机使用使用 libvirt 创建的虚拟网络连接,其中包括虚拟机的 DHCP 设置(通过 virsh net-edit 配置),为它们提供静态 IP。主机还托管 DNS 服务器(绑定),据我所知,它配置正确,因为我可以使用其完全限定的域名从其他机器 ping 每台机器并访问特定端口(例如端口主机上的 apache 服务器监听)。使用 Podman 代替 Docker 进行 OKD 的容器管理,但据我所知,命令完全相同。

我使用以下命令在气隙环境中运行注册表:

sudo podman run --name mirror-registry -p 5000:5000 -v /opt/registry/data:/var/lib/registry:z \
-v /opt/registry/auth:/auth:z -v /opt/registry/certs:/certs:z -e REGISTRY_AUTH=htpasswd \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.pem -e REGISTRY_HTTP_TLS_KEY=/certs/registry-key.pem \
-d docker.io/library/registry:latest

可以使用curl -u username:password https://host-machine.example.local:5000/v2/_catalogwhich returns访问它{"repositories":[]}。我相信这证实了我的 TLS 和授权配置是正确的。但是,如果我将 ca.pem 文件(用于签署注册表使用的 SSL 证书)传输到虚拟网络上的 VM 之一,并尝试使用相同的curl命令,我会收到错误消息:

connect to 192.168.x.x port 5000 failed: Connection refused
Failed to connect to host-machine.example.local port 5000: Connection refused
Closing connection 0

这对我来说很奇怪,因为过去我已经能够使用这种方法从 VM 与注册表进行通信,但我不确定发生了什么变化。

经过进一步挖掘,似乎端口本身存在某种问题,但我无法确定问题出在哪里。例如,如果我sudo netstat -tulpn | grep LISTEN在主机上运行,​​我会收到一条指示 podman (conmon) 正在侦听正确端口的行:

tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 48337/conmon

但是,如果我测试该端口是否可以从 VM 访问,(nc -zvw5 192.168.x.x 5000)我会收到类似的错误:Ncat: Connection refused.如果我在主机上的任何其他侦听端口上使用相同的测试,则表明与这些端口的连接成功。

请注意,我已经完全禁用了 firewalld,据我所知,所有端口都是开放的。

我不确定问题出在我的 DNS 设置、虚拟网络还是注册表本身,我不太确定如何进一步诊断问题。任何见解将不胜感激。

网络定义:

<network connections='6'>
  <name>okd</name>
  <uuid>2ce10cce-9bb6-4d5d-950f-15427172b196</uuid>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:d9:d6:95'/>
  <domain name='okd'/>
  <ip address='192.168.2.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.2.200' end='192.168.2.254'/>
      <host mac='52:54:00:45:93:07' name='okd-bootstrap' ip='192.168.2.200'/>
      <host mac='52:54:00:f0:0a:1c' name='okd-master1' ip='192.168.2.201'/>
      <host mac='52:54:00:d1:29:9e' name='okd-master2' ip='192.168.2.202'/>
      <host mac='52:54:00:c9:a4:bb' name='okd-master3' ip='192.168.2.203'/>
      <host mac='52:54:00:25:5d:48' name='okd-worker1' ip='192.168.2.204'/>
      <host mac='52:54:00:1e:90:3c' name='okd-worker2' ip='192.168.2.205'/>
    </dhcp>
  </ip>
</network>
ssl libvirt docker-registry containers virtual-network
  • 1 1 个回答
  • 1116 Views

1 个回答

  • Voted
  1. Best Answer
    TheCompWiz
    2021-03-02T13:47:41+08:002021-03-02T13:47:41+08:00

    “连接被拒绝”是一个方便的提示。iptables 拒绝连接,或者软件配置为将某些 IP 范围列入白名单/黑名单。路径中的某些东西正在积极拒绝连接。如果您收到“请求超时”......这可能是一个更大的问题列表。(路由,数据包被丢弃......等等......)

    • 1

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve