我正在尝试使用此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
也会出现其他一些事情……
答案 0 :(得分:1)
我解决了这个问题; kafka和zookeeper实际上已经在本地安装,并且brew在后台运行它们……当我卸载它们时,一切都很好!
答案 1 :(得分:0)
您的一个容器似乎仍在使用端口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