DOCKER合成错误“端口不可用”

fdx2calv  于 2023-03-17  发布在  Docker
关注(0)|答案(1)|浏览(307)

我尝试在不同的端口上使用每个服务运行我的Docker容器,但是当我只将端口8000用于一个服务时,我不断收到特定于端口8000被多个端口访问的错误。
删除qcluster服务后一切正常,但我不明白为什么它配置为端口8001而不是80000
下面是错误消息:

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8000 -> 0.0.0.0:0: listen tcp 0.0.0.0:8000: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

下面是compose.yaml文件:

services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=***********
      - SECRET_KEY=************************
      - DB_HOST=*******************
      - DB_PWD=****************
      - DB_CERT=****************
  web:
    build:
      context: app
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - '8000:8000'
    expose:
      - '8000'
    environment:
      - SECRET_KEY=**********************
      - DB_HOST=db.***********
      - DB_PWD=***************
      - DB_CERT=*************
    depends_on:
      - db
  qcluster:
    build:
      context: app
    command: python manage.py qcluster
    volumes:
      - .:/code
    ports:
      - "8000:8001"
    depends_on:
      - db
cxfofazt

cxfofazt1#

似乎有另一个容器/服务正在侦听端口8000。
运行docker container ls并检查是否有容器已经在侦听8000。如果有,则删除该容器并重试。
如果没有正在运行的容器,可能有另一个服务正在侦听该端口。

lsof -i TCP:8000 | grep LISTEN

以获取其PID(表示该进程ID的数字)。然后,使用

kill -9 YOUR_PID_HERE

相关问题