V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wyzerg
V2EX  ›  问与答

虚拟机 docker 私有 registory 搭好无法访问,防火墙都关了还是 telnet 不到端口,哪位屌大老哥帮忙看看~

  •  
  •   wyzerg · 2020-04-23 00:16:47 +08:00 · 1710 次点击
    这是一个创建于 1661 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2 台虚拟机,1 个是通过命令直接起了个私有 registry docker run -d -p 5000:5000 --restart always --name registry registry:2

    一个通过 Dockerfile 新 build 的镜像,改了配置开始 push 镜像到私有仓库 结果报 Error response from daemon: Get http://192.168.50.90:5000/v2/: dial tcp 192.168.50.90:5000: connect: no route to host

    结果我试了下虚拟机 2 个都能 ping 通,由于第二太机器私有仓库端口映射对外也暴露 5000 所以第一台 telnet 192.168.50.90 5000 返回 telnet: connect to address 192.168.50.90: No route to host 很纳闷,2 个防火墙都关了,总是报路由的问题,私有仓库那台映射也做了,有没有老哥或者屌大的懂哪里出问题的.....

    6 条回复    2020-04-23 14:24:29 +08:00
    luckyrayyy
        1
    luckyrayyy  
       2020-04-23 00:51:24 +08:00
    看着不像 registry 的问题啊,俩虚拟机互相之间都没通的样子。你怀疑 registry 的话先看它的日志呗。
    nvkou
        2
    nvkou  
       2020-04-23 01:21:58 +08:00 via Android
    没看懂你需求
    1:同宿主机的 2 虚拟机通信。使用 network 参数分配到同一网络即可。使用 container 名称访问,自带 host

    2:虚拟机 a 对宿主机发布服务。使用 port 参数映射端口。服务使用者根据网段访问宿主机 eth0 或 docker0 的地址。相关防火墙要放行

    问题原因:你虚拟机 b 默认网络是网关模式,你无法从一个私有地址直接跳到另一个私有地址。论我怎么从我家的 192.168.1.2 访问到隔壁家的 192.168.1.2 ?
    wyzerg
        3
    wyzerg  
    OP
       2020-04-23 11:39:13 +08:00
    @nvkou 好像是这个原因,我主要 2 个虚拟机都在同一网段,第 1 个虚拟机构建新镜像 push 到第 2 个虚拟机的 registry 实例中,而且默认 2 台宿主机 docker0 应该都是同一网段吧,那是不是我需要更改一下第二台宿主机的 docker0 地址,只要 2 个机器 docker0 不在同一网段就行?
    nvkou
        4
    nvkou  
       2020-04-23 13:04:02 +08:00
    @wyzerg 嗯?你在说啥?这 2 个虚拟机还不在同一个宿主上?
    docker0 是宿主的虚拟网卡,也是 docker 网络访问外部的网关,一个宿主机一个。你可以试试这样。
    ifconfig 或其他命令查询到你的 docker0 地址 比如 172.17.12.0
    然后 你的 A 机器 -p 5000:5000
    你的 B 机器访问 172.17.12.0:5000 就行了
    wyzerg
        5
    wyzerg  
    OP
       2020-04-23 13:31:57 +08:00
    @nvkou 😂 是这样的...我 mac 新建 2 个虚拟机,docker1 (192.168.50.173)和 docker2 (192.168.50.90),这两个虚拟机也分别部署了 dooker cli 和 docker service,而且这 2 个虚拟机 docker0 都是 172.17.0.1/16
    然后我是在 docker1 上构建新镜像 想 push 到 docker2 部署的 registry 上,docker2 是通过
    docker run -d -p 5000:5000 --restart always --name registry registry:2
    命令部署的,我在 docker2 进入容器 registry 看到 ip 是 172.17.0.2/16,所以 push 是 docker push 192.168.50.90:5000/hello-world 是要 push 到 docker2 上的 registry😂
    您说"你的 A 机器 -p 5000:5000" 这是啥哈?
    wyzerg
        6
    wyzerg  
    OP
       2020-04-23 14:24:29 +08:00
    @nvkou 想了想😂,192.168.50.173 和 192.168.50.90 能 ping 通。。。已经代表能访问过去了,我只需要访问 192.168.50.90:5000 就能访问到 registry 了,可是不知道哪里出了问题访问不到....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.