jenkins 如何解决网络Map问题“绑定0.0.0.0:8080失败:端口已分配”

uqcuzwp8  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(181)

我尝试通过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

niknxzdl

niknxzdl1#

如果您的主机上已经分配了端口8080,您可以将另一个端口Map到容器的8080。两个端口不能Map到主机上的同一个端口。例如,为了Map8081,请将您的组合更改为以下内容:

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启动的容器。

相关问题