Windows环境下Dockerd构建镜像时执行apt-get update失败求助
apt-get update报错(0xc0370110) 问题情况
通过dockerd.exe --register-service安装Docker Engine Windows服务后,执行docker compose up启动栈时,在构建镜像的Step 4/14(RUN apt-get update)环节报错,返回非零代码4294967295,错误提示为虚拟机或容器未运行(0xc0370110)。此前已通过dockerd -experimental解决过镜像平台不匹配、找不到Linux容器的问题。
用到的Dockerfile
# syntax=docker/dockerfile:1 FROM python:3.10-bullseye WORKDIR /app COPY Pipfile Pipfile RUN apt-get update RUN apt-get install ffmpeg libsm6 libxext6 -y RUN pip install pipenv RUN pipenv install COPY . . ENV STREAMLIT_BROWSER_GATHER_USER_STATS=false ENV STREAMLIT_SERVER_MAX_UPLOAD_SIZE=2000 ENV STREAMLIT_SERVER_RUN_ON_SAVE=true ENV STREAMLIT_SERVER_HEADLESS=true CMD ["pipenv", "run", "streamlit", "run", "src/main.py"] EXPOSE 8501
用到的docker-compose.yml
version: "1.27.0+" services: app: build: . ports: - "8501" platform: linux/amd64 volumes: - .:/app
解决方法
检查并启动WSL2后端
打开PowerShell执行:wsl --list --verbose确认默认WSL发行版状态为
Running,如果处于Stopped状态,执行wsl --start <你的WSL发行版名称>(比如wsl --start Ubuntu)启动它。重置Docker服务与WSL的关联
依次执行以下PowerShell命令:dockerd --unregister-service wsl --shutdown dockerd --register-service --experimental net start docker先注销现有Docker服务,关闭所有WSL实例,重新注册带experimental参数的服务,最后启动Docker服务。
优化Dockerfile中的
apt-get命令
把分散的apt-get命令合并,加上--fix-missing修复可能的源列表问题,同时清理缓存减小镜像体积,修改后的Dockerfile相关片段:RUN apt-get update --fix-missing && \ apt-get install -y ffmpeg libsm6 libxext6 && \ pip install pipenv && \ pipenv install && \ rm -rf /var/lib/apt/lists/*合并命令能减少镜像层,避免中间层出现状态异常。
调整WSL2内存分配
在C:\Users\<你的用户名>目录下创建.wslconfig文件,写入以下内容:[wsl2] memory=4GB processors=2执行
wsl --shutdown重启WSL,再启动Docker服务,避免因内存不足导致容器运行异常。
内容的提问来源于stack exchange,提问作者Intolighter

