GitHub Codespaces磁盘空间不足:自定义镜像额外占用空间排查与解决
GitHub Codespace自定义镜像启动失败问题
仓库结构
. ├── .devcontainer │ └── devcontainer.json ├── .github │ └── workflows │ └── build_docker_image.yml └── ingredients └── .devcontainer └── devcontainer.json
镜像构建流程
通过.github/workflows/build_docker_image.yml中的工作流构建镜像并推送到Docker Hub,核心命令如下:
devcontainer build --workspace-folder ingredients --image-name ${{ github.repository }} docker push ${{ github.repository }}
相关配置文件内容
用于构建镜像的ingredients/.devcontainer/devcontainer.json
{ "name": "xxxx xxxx", "image": "mcr.microsoft.com/devcontainers/universal:2" }
用于启动Codespace的根目录.devcontainer/devcontainer.json
{ "image": "docker.io/kostrykin/mobi-devcontainer-python:latest" }
启动报错信息
[2023-11-22 11:16:32.738Z: docker: failed to register layer: ApplyLayer exit status 1 stdout: stderr: write /home/codespace/.local/lib/python3.10/site-packages/nvidia/cudnn/lib/libcudnn_adv_infer.so.8: no space left on device.
核心疑问
按逻辑自定义镜像和原镜像mcr.microsoft.com/devcontainers/universal:2应该完全等效——自定义镜像仅基于原镜像新增了一层几乎无内容的镜像层,且通过docker inspect确认两者实际大小一致。但使用自定义镜像启动Codespace时却出现磁盘空间不足的错误,请问额外占用空间的来源是什么?
后续优化疑问
除了将主机配置从32GB升级到64GB,或者在devcontainer的initializeCommand中执行docker system prune --all --force,有没有更优雅的解决办法?
补充信息
使用上述initializeCommand成功创建Codespace后,执行df -h的输出如下:
/workspaces/mobi-devcontainer-python (main) $ df -h Filesystem Size Used Avail Use% Mounted on overlay 32G 13G 18G 43% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/root 29G 22G 7.2G 76% /usr/sbin/docker-init /dev/loop3 32G 13G 18G 43% /workspaces /dev/sda1 44G 148K 42G 1% /tmp
内容的提问来源于stack exchange,提问作者kostrykin
相关产品推荐
相关产品推荐

