当我删除
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 container ls
并检查是否有容器已经在监听 8000。如果有,只需杀死该容器并重试。如果没有正在运行的容器,则可能有另一个服务正在侦听该端口。要识别它,请运行
lsof -i TCP:8000 | grep LISTEN
获取其PID(代表该进程ID的数字)。然后,使用杀死它
kill -9 YOUR_PID_HERE
所以我使用的容器是8000,但我无法从中获取数据。我什至不知道这是否是发生的事情。