[英]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 上的應用程序。 怎么了?
這是我現在得到的調試命令結果
筆記:
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.