M1芯片执行docker-compose up -d时出现镜像租约未找到错误
问题
在M1芯片设备上执行docker-compose up -d启动Kafka、ZooKeeper、MongoDB等服务时,出现错误:
Error response from daemon: lease "moby-image-sha256:c2740b69f111bd711c867e337c12bab4b3d720c987e0d09549fe95e6badc6ba8": not found
相关配置文件如下:
docker-compose.yml
version: '3.9' services: telikos-activityplanworkflow-service: container_name: telikos-activityplanworkflow-service build: context: . dockerfile: Dockerfile depends_on: ##----Dependent images----------- broker: condition: service_healthy mongo: condition: service_started ##---Ports------------- ports: - 8080:8080 expose: - 8080 ##---Environment variables------------ environment: - server.port=8080 - kafkabootstrapservers=broker:9092 ##----------------------------------------- #----docker-images------------------------------------------------------ zookeeper: image: confluentinc/cp-zookeeper:6.2.0 hostname: zookeeper container_name: zookeeperap ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 broker: image: confluentinc/cp-server:6.2.0 hostname: broker container_name: brokerap depends_on: - zookeeper ports: - "29092:29092" - "9101:9101" environment: KAFKA_BROKER_ID: 1 ALLOW_PLAINTEXT_LISTENER: "yes" KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092 KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1 KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_JMX_PORT: 9101 KAFKA_JMX_HOSTNAME: localhost KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://schema-registry:8081 CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:9092 CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1 CONFLUENT_METRICS_ENABLE: 'true' CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous' healthcheck: test: nc -z localhost 29092 || exit -1 start_period: 25s interval: 10s timeout: 10s retries: 10 mongo: container_name: mongoap image: mongo ports: - 27017:27017 environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password healthcheck: test: echo 'db.runCommand("ping").ok' | mongo mongo:27017/test --quiet start_period: 40s interval: 15s timeout: 10s retries: 5 mongo-express: image: mongo-express restart: always ports: - 8081:8081 environment: ME_CONFIG_MONGODB_ADMINUSERNAME: admin ME_CONFIG_MONGODB_ADMINPASSWORD: password ME_CONFIG_MONGODB_URL: mongodb://admin:password@mongo:27017/
Dockerfile
FROM bellsoft/liberica-openjdk-alpine:17 RUN apk add curl VOLUME /tmp WORKDIR /app COPY target/telikos-activityplanworkflow-service.jar /app/ ADD --chown=15000:15000 'https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar' opentelemetry-javaagent.jar ENTRYPOINT ["java", "-javaagent:opentelemetry-javaagent.jar", "-jar", "telikos-activityplanworkflow-service.jar"]
解决方案
这个错误是Docker守护进程访问镜像租赁失败导致的,大概率和镜像缓存损坏、M1芯片ARM架构兼容性有关,可按以下步骤修复:
清理Docker无效资源
执行命令彻底清除未使用的镜像、容器、卷和缓存:docker system prune -a -f docker volume prune -f适配ARM架构镜像
M1是ARM架构,部分旧版本Confluent镜像未适配。修改docker-compose.yml中的zookeeper和broker服务:zookeeper: image: confluentinc/cp-zookeeper:7.3.0 # 7.0+版本原生支持ARM platform: linux/amd64 # 若找不到ARM镜像,强制用amd64(依赖Rosetta2) # 其余配置不变 broker: image: confluentinc/cp-server:7.3.0 platform: linux/amd64 # 其余配置不变重新构建本地服务镜像
清理缓存后重新构建自己的服务镜像:docker-compose build --no-cache telikos-activityplanworkflow-service重启Docker服务
在Docker Desktop菜单栏选择"Restart",彻底重启守护进程。重新启动服务
完成以上步骤后执行:docker-compose up -d
内容的提问来源于stack exchange,提问作者MoonPie
相关产品推荐
相关产品推荐

