我正试图用这个docker文件来监视kafka和zookeeper
version: '2'
services:
kafka:
image: landoop/fast-data-dev:cp3.3.0
hostname: kafka-host
ports:
- 29092:29092
- 3030:3030 # Landoop UI
- 8081-8083:8081-8083 # REST Proxy, Schema Registry, Kafka Connect ports
- 9581-9585:9581-9585 # JMX Ports
- 2181:2181 # Zookeeper
- 9092:9092 # Kafka Broker
environment:
ADV_HOST: 127.0.0.1
RUNTESTS: 0
FORWARDLOGS: 0
SAMPLEDATA: 0
但我一直收到这个错误信息
Cannot start service kafka: b'driver failed programming external connectivity on endpoint kafka-docker_kafka_1 (a741da2d21a00bb752fc169d579fa39bcdeef0cc88ec560d2e93b8fd287b8b5a): Error starting userland proxy: Bind for 0.0.0.0:9092 failed: port is already allocated'
即使我删除了所有的图像和容器。。。
带“ sudo lsof -i tcp:9092
"
我看到一些过程正在进行。。。但即使我杀了他们 kill -9 PID
其他人出现了。。。
2条答案
按热度按时间bxpogfeg1#
我解决了问题;kafka和zookeeper实际上已经在本地安装,brew正在后台运行它们。。。当我卸载它们时,一切都很好!
jchrr9hc2#
您的一个集装箱似乎仍在使用端口9092(如图所示)
sudo lsof -i tcp:9092
显示)。跑docker ps
确保没有使用此端口运行的容器。此外,阻止容器使用
kill -9
命令不正确:如果你用的是
docker-compose
(如您的示例所示),您可以运行docker-compose down
停止所有服务(因此文件中定义的所有容器)。或者,如果您只想使用docker
命令,你必须跑docker stop <container_id_or_name>
,但我不建议您使用docker-compose
当你发布kill -9
命令时,容器会不断重新启动,因为您可能已经在服务上定义了重新启动策略(https://docs.docker.com/compose/compose-file/compose-file-v2/#restart). 容器在另一个退出后启动(由kill -9
)正在使用与前一个相同的端口,因此始终使用端口9092