我尝试在不同的端口上使用每个服务运行我的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
1条答案
按热度按时间cxfofazt1#
似乎有另一个容器/服务正在侦听端口8000。
运行
docker container ls
并检查是否有容器已经在侦听8000。如果有,则删除该容器并重试。如果没有正在运行的容器,可能有另一个服务正在侦听该端口。
以获取其PID(表示该进程ID的数字)。然后,使用