更新Docker后出现failed to solve错误(代码100)求助
Docker构建失败排查(apt-get退出码100)
问题背景
更新Docker后,未修改任何代码,执行docker compose --profile appnm up -d时构建失败,错误提示:
failed to solve: executor failed running [/bin/sh -c apt-get update -qq && apt-get install -y build-essential]: exit code: 100
此前相同的Docker Compose配置与Dockerfile可正常运行。
相关配置文件
Docker Compose配置
version: '3.9' services: # web service (connected to local DB) web: &web container_name: web env_file: .env deploy: resources: limits: cpus: '2' memory: 2G build: context: . dockerfile: Dockerfile command: /bin/sh -c "rm -f /app/tmp/pids/server.pid && gem install bundler -v 2.2.21 && bundle install && rails db:migrate && rails server --port 3000 --binding 0.0.0.0" ports: - 3000:3000 - 5432:5432 - 2222:2222 volumes: - ../:/app:cached - bundle:/usr/local/bundle - rails_cache:/app/tmp/cache - node_modules:/app/node_modules depends_on: - db profiles: - app - appnm # database db: container_name: db image: postgres:14.2 volumes: - .psqlrc:/root/.psqlrc:ro - dbdat:/var/lib/postgresql/data - ./log:/root/log:cached - ./hlp-db.dump:/hlp-db.dump environment: - POSTGRES_DB - POSTGRES_USER - POSTGRES_PASSWORD ports: - 5432 healthcheck: test: pg_isready -U postgres -h 127.0.0.1 interval: 5s profiles: - app - appnm - db # database admin db-admin: container_name: dbAdmin image: adminer ports: - 1933:8080 depends_on: - db profiles: - app - appnm - db volumes: web: bundle: dbdat: node_modules: rails_cache:
Dockerfile
FROM ruby:2.7.4 RUN apt-get update -qq && apt-get install -y build-essential RUN apt-get install -y nodejs ENV APP_HOME /app RUN mkdir $APP_HOME WORKDIR $APP_HOME EXPOSE 3000
排查与解决方法
清理构建缓存:Docker更新后可能残留旧的镜像层,运行以下命令强制清理:
docker builder prune -a之后重新执行构建命令,避免缓存导致的源更新失败。
检查容器网络连通性:apt-get退出码100通常是网络问题,验证容器能否访问外部源:
# 启动临时容器测试网络 docker run --rm ruby:2.7.4 ping deb.debian.org -c 3如果ping不通,检查Docker的网络配置(如代理、防火墙规则)。
替换apt源:ruby:2.7.4基于Debian Bullseye,默认源可能访问不稳定,修改Dockerfile替换为国内镜像源:
FROM ruby:2.7.4 # 替换为清华Debian镜像源 RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list RUN apt-get update -qq && apt-get install -y build-essential RUN apt-get install -y nodejs ENV APP_HOME /app RUN mkdir $APP_HOME WORKDIR $APP_HOME EXPOSE 3000查看详细构建日志:使用无缓存构建并查看完整输出,定位具体错误:
docker compose build --no-cache web日志会显示apt-get update或install时的具体失败原因(如某个源无法访问、包依赖问题)。
验证Docker Compose兼容性:部分Docker更新后,
docker compose命令可能存在兼容性问题,尝试使用旧版命令:docker-compose --profile appnm up -d
内容的提问来源于stack exchange,提问作者user9540234
相关产品推荐
相关产品推荐

