无法使用docker启动kafka和zookeeper;端口9092和2181已经分配

zphenhs4  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(1107)

我正试图用这个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 其他人出现了。。。

bxpogfeg

bxpogfeg1#

我解决了问题;kafka和zookeeper实际上已经在本地安装,brew正在后台运行它们。。。当我卸载它们时,一切都很好!

jchrr9hc

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

相关问题