AWS-Linux-Docker-Selenium grid Cannot start service chrome: port is already allocated 错误

AWS-Linux-Docker-Selenium grid Cannot start service chrome: port is already allocated error

我正在使用 AWS-Linux-Docker-Selenium 网格配置来进行 运行 selenium 测试。 docker-compose up 运行 没问题,我可以看到 chrome、firefox、opera 的单个容器。

docker-compose up

但是当我尝试使用 docker-compose scale chrome=3 创建容器节点时,出现以下错误。我已经尝试了很多方法,比如更改 Linux 实例,sudo service docker restart 我不会逃避这个。请帮助如何扩展 chrome 个容器。

 docker-compose scale chrome=3

 Cannot start service chrome: driver failed programming external connectivity on endpoint ec2-user_chrome_3 (f0d153ee59169eaf94501b8dc9e77db4157614afd731cba673f2aed6c054d237): Bind for 0.0.0.0:6900 failed: port is already allocated

docker-compose.yml

# To execute this docker-compose yml file use `docker-compose -f docker-compose-v3.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker-compose -f docker-compose-v3.yml down`
version: "3"
services:
  chrome:
    image: selenium/node-chrome:4.0.0-beta-1-prerelease-20210114
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    ports:
      - "6900:5900"

  firefox:
    image: selenium/node-firefox:4.0.0-beta-1-prerelease-20210114
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    ports:
      - "6901:5900"

  opera:
    image: selenium/node-opera:4.0.0-beta-1-prerelease-20210114
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    ports:
      - "6902:5900"

  selenium-hub:
    image: selenium/hub:4.0.0-beta-1-prerelease-20210114
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

发生这种情况是因为您的节点配置为将 VNC 端口暴露给主机的某个端口,当您启动多个节点时,它们都会尝试绑定到该端口。

而不是:

    ports:
      - "6901:5900"

您需要使用:

    ports:
      - "5900"

这将使您的 docker 组合将容器端口暴露给主机的随机选择的空闲端口。