Docker Compose Mac Error: Cannot start service zoo1: Mounts denied:

Docker Compose Mac Error: Cannot start service zoo1: Mounts denied:

当 运行 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.

在我将 Mac 的 Docker 多次更新为 Docker version 20.10.0, build 7287ab3 之前它在昨天工作。 Mac这本书是 运行 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

更新 2020-12-14:

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

上一个答案:

我在更新到 Docker Desktop 3.0.0(针对 Mac)后遇到了这个问题。进入首选项并禁用 实验性功能 -> 使用 gRPC FUSE 进行文件共享后 我又可以使用卷挂载了。

TL;DR:如果您使用的是 Docker 桌面版 3.0.0,升级到 3.0.1 应该没问题。

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

Github 问题 here

Docker v3.0.1 发行说明here

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