簡體   English   中英

Docker 容器正在運行但無法訪問它們

[英]Docker containers are running but can't access them

我正在學習 docker 並且已經開始使用官方入門教程

我的問題是在第 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

我按照鏈接中的說明進行操作。 唯一不同的是,當我運行docker swarm init從守護進程收到此響應錯誤響應時:無法選擇 IP 地址進行廣告,因為該系統在不同接口上有多個地址(eth0 上的 10.0.2.15 和 192.168.99.100 上的eth1) - 使用 --advertise-addr 指定一個我運行docker swarm init --advertise-addr=192.168.99.100因為這是命令docker-machine ip default返回的 IP 地址

問題容器的所有 5 個副本都已啟動並正在運行,但我無法訪問 192.168.99.100:4000 上的應用程序。 怎么了?

這是我現在得到的調試命令結果

筆記:

  • 使用適用於 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關於群路由網和更多信息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時顯示I'm <hostname>

您應該能夠重現這一點。 您確定您的 python 服務器正在偵聽端口 80 並且沒有綁定到 127.0.0.1 嗎?

結果發現 docker-machine 本身出了點問題。 重新創建后,一切正常。

希望這會幫助任何人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM