由于以下错误,我的 docker 容器无法建立几个月了:
ERROR: for rabbit Cannot start service rabbit: driver failed programming external connectivity on endpoint encoder_rabbit_1 (e9fa1caaf9b8cc57e0a1480cb50b17d0afb276d74471fca9fec922ddc559b1b2): Error starting userland proxy: listen tcp 0.0.0.0:5672: bind: address already in use
Run Code Online (Sandbox Code Playgroud)
为了“解决”我所做的问题:
$> sudo lsof -i tcp:5672
Run Code Online (Sandbox Code Playgroud)
我得到:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 1313 rabbitmq 54u IPv6 27235 0t0 TCP *:amqp (LISTEN)
Run Code Online (Sandbox Code Playgroud)
然后:
$> sudo kill -9 1313
Run Code Online (Sandbox Code Playgroud)
通过终止rabbitmq进程,我可以建立容器:
$> docker-compose up -d --build --force-recreate
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来避免出现此错误而不在每次rabbitmq 进程时都杀死它?
感谢您的帮助
编辑 1:
根据 Zeitounator 的评论,我在下面发布docker-compose.yml:
version: '2.1'
services:
files:
image: busybox
volumes:
- ./file/input:/file/input
- ./file/output:/file/output
grafana:
image: grafana/grafana:5.1.0
ports:
- 3000:3000
volumes:
- ./prometheus/grafana/:/etc/grafana/provisioning/
environment:
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
- GF_AUTH_BASIC_ENABLED=false
depends_on:
- prometheus
prometheus:
image: prom/prometheus
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- 9090:9090
aggregatore:
build: aggregatore/.
volumes:
- ./aggregatore:/src
volumes_from:
- files
ports:
- 8000:8000
command: ["python", "/src/main.py"]
depends_on:
rabbit:
condition: service_healthy
classificatore:
build: classificatore/.
volumes:
- ./classificatore:/src
volumes_from:
- files
ports:
- 8080:5000
command: ["python", "/src/main.py"]
depends_on:
rabbit:
condition: service_healthy
mpeg-pre-encoder:
build: mpeg-pre-encoder/.
volumes:
- ./mpeg-pre-encoder:/src
- ./gabac_encoder:/src/gabac_encoder
volumes_from:
- files
depends_on:
rabbit:
condition: service_healthy
rabbit:
image: rabbitmq
ports:
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "cluster_status"]
interval: 5s
timeout: 2s
retries: 20
Run Code Online (Sandbox Code Playgroud)
我已将兔子端口更改为
ports:
- 7000:7000
Run Code Online (Sandbox Code Playgroud)
它做到了!
由于我根本不是这方面的专家,而且我没有编写 .yml 文件,如果只有 rabbitmq 使用该端口,那兔子是如何使我的容器失败的?在 .yml 中,我在该端口上找不到任何其他进程映射。我想我错过了一些步骤
基本问题是您将 docker 服务的端口映射到本地主机上的端口 5672,并且该端口已被占用。3种解决方案:
| 归档时间: |
|
| 查看次数: |
1910 次 |
| 最近记录: |