Docker Compose Mac 错误:无法启动服务 zoo1:安装被拒绝:

Ath*_*dom 38 apache-kafka docker docker-compose docker-for-mac

运行时出现以下错误docker-compose up -d

% docker-compose up -d

Creating network "kafka-test_default" with the default driver
Creating kafka-test_zoo1_1 ... error

ERROR: for kafka-test_zoo1_1  Cannot start service zoo1: Mounts denied: approving /Users/test/kafka-test/zk-single-kafka-single/zoo1/datalog: file does not exist

ERROR: for zoo1  Cannot start service zoo1: Mounts denied: approving /Users/test/kafka-test/zk-single-kafka-single/zoo1/datalog: file does not exist
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)

在我将 Docker for Mac 多次更新为Docker version 20.10.0, build 7287ab3. Macbook 运行的是 Big Sur 11.0.1。

注意:如果 Docker 降级到 19.03.13,它会起作用。但这不是一个好的解决方案。


docker-compose.yml

基于simplesteph/kafka-stack-docker-compose

version: '2.1'

services:
  zoo1:
    image: zookeeper:3.4.9
    hostname: zoo1
    ports:
      - "2181:2181"
    environment:
        ZOO_MY_ID: 1
        ZOO_PORT: 2181
        ZOO_SERVERS: server.1=zoo1:2888:3888
    volumes:
      - ./zk-single-kafka-single/zoo1/data:/data
      - ./zk-single-kafka-single/zoo1/datalog:/datalog

  kafka1:
    image: confluentinc/cp-kafka:5.5.1
    hostname: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - ./zk-single-kafka-single/kafka1/data:/var/lib/kafka/data
    depends_on:
      - zoo1version: '2.1'

services:
  zoo1:
    image: zookeeper:3.4.9
    hostname: zoo1
    ports:
      - "2181:2181"
    environment:
        ZOO_MY_ID: 1
        ZOO_PORT: 2181
        ZOO_SERVERS: server.1=zoo1:2888:3888
    volumes:
      - ./zk-single-kafka-single/zoo1/data:/data
      - ./zk-single-kafka-single/zoo1/datalog:/datalog

  kafka1:
    image: confluentinc/cp-kafka:5.5.1
    hostname: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - ./zk-single-kafka-single/kafka1/data:/var/lib/kafka/data
    depends_on:
      - zoo1
Run Code Online (Sandbox Code Playgroud)

dre*_*ign 82

更新 2020-12-14:

此问题似乎已在 Docker Desktop 3.0.1 for Mac 中解决。如果您禁用了 gRPC,您可能希望在更新到 3.0.1 后再次启用它。

上一个答案:

更新到 Docker Desktop 3.0.0(适用于 Mac)后,我遇到了这个问题。进入首选项并禁用实验功能 -> 使用 gRPC FUSE 进行文件共享后,我能够再次使用卷挂载。

  • 他们应该默认禁用它 (4认同)
  • 我在 Docker Desktop 应用程序的首选项中找到了此设置。打开 Docker Desktop 应用程序(从 Docker 鲸鱼菜单中选择仪表板),单击齿轮图标,从左侧列表中选择实验功能,然后关闭使用 gRPC FUSE 进行文件共享(将开关移至左侧,它变为灰色而不是蓝色) (3认同)

Blu*_*her 5

TL;DR:如果您使用的是 Docker Desktop 3.0.0,请升级到 3.0.1,您应该会很好。

更新到 Docker Desktop 3.0.0 for Mac 后,我也遇到了这个问题。@drewsign 的回答为我解决了问题,然后我发现以下资源解释了 3.0.0 中存在错误 -> 所以我升级到 3.0.1 并解决了问题!

Github 问题在这里

v3.0.1 的 Docker 发行说明在这里

要强制您的 Docker 桌面应用程序更新(在 Mac 上),请单击顶部工具栏上的鲸鱼图标,然后单击“检查更新”。安装更新后,重新启动 Docker。现在您需要关闭“实验性功能-> 使用 gRPC FUSE 进行文件共享”