【问题标题】:How to get around network mapping issue "Bind for 0.0.0.0:8080 failed: port is already allocated"如何解决网络映射问题“绑定 0.0.0.0:8080 失败:端口已分配”
【发布时间】:2022-11-12 17:03:09
【问题描述】:

我正在尝试按照page 构建一个 Jenkins docker 容器,以便我可以在本地进行测试。问题在于,一旦我运行了docker run -it -p 8080:8080 jenkins/jenkins:lts,我似乎无法为我的docker-compose.yml 使用相同的端口:

version: '3.8'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    user: root
    privileged: true
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
        - .jenkins/jenkins_configuration:/var/jenkins_home
        - /var/run/docker.sock:/var/run/docker.sock

PowerShell 中显示的错误(如果相关,我在 Windows 10 上)是:

Error response from daemon: driver failed programming external connectivity on endpoint jenkins (xxxx): Bind for 0.0.0.0:8080 failed: port is already allocated

我已确保它不受其他容器、图像或卷的影响,并已删除除此之外的所有内容。

我希望在本地使用 Jenkins,但我该如何解决这个问题?我不熟悉网络,到目前为止我用谷歌搜索的内容似乎对我不起作用。我希望这能够在localhost:8080 上使用 Jenkins ui

【问题讨论】:

  • 您是否停止了正在运行的容器?

标签: docker jenkins docker-compose


【解决方案1】:

如果主机上已经分配了 8080 端口,则可以将不同的端口映射到容器的 8080。两个东西不能映射到主机上的同一个端口。例如,为了映射 8081,请将您的 compose 更改为以下内容:

version: '3.8'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    user: root
    privileged: true
    ports:
      - 8081:8080 # a different port is mapped here
      - 50000:50000
    volumes:
        - .jenkins/jenkins_configuration:/var/jenkins_home
        - /var/run/docker.sock:/var/run/docker.sock

然后,您只需要使用端口localhost:8081 而不是localhost:8080 访问由docker-compose 启动的容器。

【讨论】:

  • 惊人的!这行得通,我可以访问詹金斯用户界面
猜你喜欢
  • 2018-02-20
  • 2018-07-19
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多