Я получаю следующую ошибку при запуске 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.
Это работало вчера, прежде чем я несколько раз обновил Docker для 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
ОБНОВЛЕНИЕ 2020-12-14:
Эта проблема, по-видимому, решена в Docker Desktop 3.0.1 для Mac. Если вы отключили gRPC, вы, вероятно, захотите снова включить его после обновления до 3.0.1.
Предыдущий ответ:
У меня возникла эта проблема после обновления до Docker Desktop 3.0.0 (для Mac). После входа в «Настройки» и отключения «Экспериментальные функции» -> «Использовать gRPC FUSE для обмена файлами» я снова смог использовать монтирование томов.
они должны выпустить его отключенным по умолчанию 😕
Я потерял 3 часа на это :(
После обновления до 3.0.1 это должно быть отменено.
Спасибо! это сработало. Пришлось обновить докер, а затем отключить функцию gRPC.
Вкратце: если вы используете Docker Desktop 3.0.0, обновитесь до 3.0.1, и все будет хорошо.
У меня также возникла эта проблема после обновления до Docker Desktop 3.0.0 для Mac. Ответ @drewsign решил проблему для меня, затем я нашел следующие ресурсы, объясняющие, что в 3.0.0 была ошибка -> поэтому я обновился до 3.0.1, и проблема исправлена!
Выпуск Github здесь
Примечания к выпуску Docker для v3.0.1 здесь
Чтобы принудительно обновить приложение Docker Desktop (на Mac), щелкните значок кита на верхней панели инструментов, затем «Проверить наличие обновлений». После установки обновления перезапустите Docker. Теперь вам нужно отключить «Экспериментальные функции -> Использовать gRPC FUSE для обмена файлами».
Я нашел этот параметр в приложении Docker Desktop в настройках. Откройте приложение Docker Desktop (выберите «Панель управления» в меню кита Docker), щелкните значок шестеренки, выберите «Экспериментальные функции» в списке слева и отключите параметр «Использовать gRPC FUSE для обмена файлами» (переместите переключатель влево, он станет серым, а не синим). )