docker compose up 错误“端口不可用”

问题描述 投票:0回答:2
我尝试在不同端口上运行每个服务的 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
    
docker docker-compose yaml dockerfile django-q
2个回答
2
投票
似乎您有另一个容器/服务正在侦听端口 8000。

运行

docker container ls

 并检查是否有容器已经在监听 8000。如果有,只需杀死该容器并重试。

如果没有正在运行的容器,则可能有另一个服务正在侦听该端口。要识别它,请运行

lsof -i TCP:8000 | grep LISTEN
获取其PID(代表该进程ID的数字)。然后,使用

杀死它

kill -9 YOUR_PID_HERE
    

0
投票
Docker 容器 ls 告诉我: 容器 ID 图像命令创建状态端口名称 ********* sail-8.3/app "start-container" 3小时前 上升3小时 0.0.0.0:80->80/tcp, 0.0.0.0:5173->5173/tcp, 8000/tcp测试-laravel.test-1 ********* mysql/mysql-server:8.0 "/entrypoint.sh mysq…" 3小时前 正常运行3小时 0.0.0.0:3306->3306/tcp, 33060-33061/tcp 测试-mysql-1

所以我使用的容器是8000,但我无法从中获取数据。我什至不知道这是否是发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.