0

在底部解决

但是为什么我必须附加:4000?


我在这里遵循 docker 入门指南,https://docs.docker.com/get-started/part4/

我相当确定我已经正确完成了所有操作,但我想知道为什么在部署后我无法连接以查看应用程序。

我已将我的环境设置为我的虚拟机 myvm1,以供参考以下命令。

码头集装箱 ls -a

CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS               NAMES
099e16249604        beresj/getting-started:part2   "python app.py"     12 seconds ago      Up 12 seconds       80/tcp              getstartedlab_web.5.y0e2k1r1ev47u24e5iufkyn3i
6f9a24b343a7        beresj/getting-started:part2   "python app.py"     12 seconds ago      Up 12 seconds       80/tcp              getstartedlab_web.3.1pls3osj3uhsb5dyqtt4ts8j6

泊坞窗图像 ls -a

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
beresj/getting-started   <none>              e290b6208c21        22 hours ago        131MB

码头工人栈 ls

NAME                SERVICES            ORCHESTRATOR
getstartedlab       1                   Swarm

码头机器 ls

NAME    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
myvm1   *        virtualbox   Running   tcp://192.168.99.100:2376           v18.09.6   
myvm2   -        virtualbox   Running   tcp://192.168.99.101:2376           v18.09.6  

docker stack ps getstartedlab

ID                  NAME                  IMAGE                          NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
vkxx79fh3h85        getstartedlab_web.1   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
qexbaa3wz0pd        getstartedlab_web.2   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
1pls3osj3uhs        getstartedlab_web.3   beresj/getting-started:part2   myvm1               Running             Running 3 minutes ago                       
ucuwen1jrncf        getstartedlab_web.4   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
y0e2k1r1ev47        getstartedlab_web.5   beresj/getting-started:part2   myvm1               Running             Running 3 minutes ago     

卷曲 192.168.99.100

curl: (7) Failed to connect to 192.168.99.100 port 80: Connection refused

码头工人信息

Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 18.09.6
...
Swarm: active
 NodeID: 0p9qrax9h3by0fupat8ufkfbq
 Is Manager: true
 ClusterID: 7vnqdk85n8jx6fqck9k7dv2ka
 Managers: 1
 Nodes: 2
 Default Address Pool: 10.0.0.0/8  
...
Node Address: 192.168.99.100
 Manager Addresses:
  192.168.99.100:2377
...
Kernel Version: 4.14.116-boot2docker
Operating System: Boot2Docker 18.09.6 (TCL 8.2.1)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 989.4MiB
Name: myvm1

当我在本地机器上而不是在集群中的虚拟机上运行它时,我希望看到我能看到的内容(我认为我的术语是正确的?)

不知道如何检查打开的端口。
再次:如果我只是删除堆栈,取消设置 docker-machine 环境,然后运行:
docker stack deploy -c docker-compose.yml getstartedlab
not on the vm,这将有效。

先感谢您。(另外,我是新手,因此是入门指南,所以我很感激任何帮助)

编辑

如果我将 :4000 附加到我的 url 中的 VM IP,例如:192.168.99.100:4000 或 192.168.99.101:4000,它会起作用。它显示了 myvm1 的“docker container ls”中列出的两个容器 ID,其他三个来自 myvm2。谁能告诉我为什么我必须追加 4000?是因为我的 docker-compose.yml 中有端口:“4000:80”吗?

4

1 回答 1

1

不确定这是否会有所帮助,但如果您使用docker inspect <instance_id_here>,您可以看到暴露了哪些端口。

暴露的端口不是开放的端口。您需要将主机端口绑定到 docker-compose.yml 中的容器端口才能打开它。

于 2019-06-19T13:38:53.493 回答