gpt4 book ai didi

Docker 容器正在运行但无法访问它们

转载 作者:行者123 更新时间:2023-12-02 19:28:21 24 4
gpt4 key购买 nike

我正在学习 docker,并从 Official get started Tutorial 开始.

我的问题在第 3 步。

这是我的 docker-compose.yml 文件(与教程中的相同)

version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet

我按照 link 中的说明进行操作.
唯一不同的是,当我运行 docker swarm init 时并得到此响应来自守护进程的错误响应:无法选择要发布的 IP 地址,因为该系统在不同的接口(interface)上有多个地址(eth0 上的 10.0.2.15 和 eth1 上的 192.168.99.100) - 使用 --advertise-addr 指定一个我跑了 docker swarm init --advertise-addr=192.168.99.100因为那是命令 docker-machine ip default 的 IP 地址返回

问题
容器的所有 5 个副本都已启动并运行,但我无法访问 192.168.99.100:4000 上的应用程序。怎么了?

这是我现在得到的
Debugging commands results

备注:
  • 使用适用于 Windows 的 Docker 工具箱(Windows 10 家庭版)
  • 我试过命令docker swarm init --advertise-addr=192.168.99.100 listen-addr=192.168.99.100
  • 最佳答案

    您可以使用长格式在 docker-compose.yml 文件中声明端口,如以下文件 test-compose.yml :

    version: "3.6"

    services:
    web:
    image: jwilder/whoami:latest
    deploy:
    replicas: 5
    resources:
    limits:
    cpus: "0.1"
    memory: 50M
    restart_policy:
    condition: on-failure
    ports:
    - target: 8000
    published: 4000
    protocol: tcp
    mode: ingress
    networks:
    - webnet

    networks:
    webnet:
    driver: overlay

    使用入口模式,您应该能够通过端口 80 访问 Swarm 集群的任何节点上的服务。

    https://docs.docker.com/engine/swarm/ingress/#using-the-routing-mesh有关 Swarm 路由网格和 https://docs.docker.com/compose/compose-file/#long-syntax-1 的更多信息对于长端口语法。

    我在 Windows 10 上对此进行了测试,刚刚运行 docker stack deploy -c test-compose.yml test并且可以看到 I'm <hostname>访问时显示 localhost:4000
    您应该能够重现这一点。
    您确定您的 python 服务器正在监听端口 80 并且未绑定(bind)到 127.0.0.1 吗?

    关于Docker 容器正在运行但无法访问它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54051955/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com