如何找到registry服务的本地docker IP地址?

问题描述 投票:0回答:1

我已经创建了一个本地 docker 注册表,我想从另一个容器/服务内部访问它。撰写文件如下所示:

  registry:
    image: "registry"
    container_name: registry
    restart: always
    environment:
      REGISTRY_STORAGE_DELETE_ENABLED: "true"
    ports:
      - ${REGISTRY_PORT:-5100}:5000
    volumes:
      - ${REGISTRY_PATH:-./registry}:/var/lib/registry:rw

  update:
    profiles: ["service2"]
    image: "service2"
    container_name: service2
    depends_on:
     - registry
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

我可以从本地 ip 和端口

172.19.3.1:5100
(例如
curl 172.19.3.1:5100/v2/_catalog
)从 service2 容器内部访问注册表,而容器 ip 地址是:

registry 172.19.3.2
service  172.19.3.3

我想知道如何获取或确定注册表本地 docker IP 地址将是

xxx.1
(或将分配的任何内容),因为注册表服务已启动
xxx.2

docker ip registry
1个回答
0
投票

您正在通过本地主机(您的计算机)的端口

5100
公开您的注册表,
172.19.3.1
IP 地址适用于您自己的电脑,端口 5100 也被公开,默认情况下 docker 在所有接口上公开端口。这样您就可以通过主机连接到容器。

如果您想绕过主机并从其他容器连接到容器,建议使用您的服务名称,它将解析为其他容器的IP地址。

在你的docker-compose中,你的registry服务名称是

registry
,你的service2服务名称是
update
,在service2容器中,如果你运行
nslookup registry
curl -v registry
,你会看到名称被解析为IP 地址。

所以如果你跑步

curl registry:5000/v2/_catalog

你应该得到同样的回应

希望有帮助! :)

© www.soinside.com 2019 - 2024. All rights reserved.