如何在docker-compose中将public端口分配给端口5900

How to assign public port to port 5900 in docker-compose

我有以下 YAML 文件:

seleniumhub:

image: selenium/hub

ports: 
 - 4444:4444

火狐节点:

image: selenium/node-firefox-debug  

ports:
 - 4577

links: 
 - seleniumhub:hub 

expose: 
 - "5900"

chromenode:

image : selenium/node-chrome-debug

ports:
 - 4578

links:
 - seleniumhub:hub

expose: 
 - "5900"

docker ps:

time="2017-04-01T17:57:44+03:00" level=info msg="Unable to use system certificate pool: crypto/x509: system root pool is not available on Windows"

CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                               NAMES
9d2ccb193b54        selenium/node-firefox-debug   "/opt/bin/entry_po..."   6 seconds ago       Up 5 seconds        5900/tcp, 0.0.0.0:32785->4577/tcp   dockercompose_firefoxnode_1
4be6223fe043        selenium/node-chrome-debug    "/opt/bin/entry_po..."   6 seconds ago       Up 5 seconds        5900/tcp, 0.0.0.0:32784->4578/tcp   dockercompose_chromenode_1
7d95d3e73016        selenium/hub                  "/opt/bin/entry_po..."   7 seconds ago       Up 6 seconds        0.0.0.0:4444->4444/tcp              dockercompose_seleniumhub_1

但是每当我在 Docker 快速启动终端中 运行 下面的命令时:

docker port 9d2ccb193b54 5900

我得到以下:

Error: No public port '5900/tcp' published for 9d2ccb193b54

而且我无法通过 VNC 连接到节点机器

对于 firefoxnode 试试这个配置:

image: selenium/node-firefox-debug  

ports:
 - 4577
 - 5900

links: 
 - seleniumhub:hub 

expose: 
 - "5900"

expose 不会将端口发布到主机,只能被链接服务访问。它适用于容器间通信。 ports 会将那个端口暴露给主机。

公开端口的语法是:

ports:
  - "host:container"

你的情况:

image: selenium/node-firefox-debug  

ports:
 - 4577
 - "5900:5900"

links: 
 - seleniumhub:hub