如何增加docker build的卷大小

时间:2016-08-26 06:44:47

标签: docker

Dockerfile中的一个步骤需要磁盘空间超过10G。确实如此。但是,docker build中的所有中间容器都是使用10G卷创建的。

我做了什么:

  • 使用dockerd开始--storage-opt dm.basesize=25Gdocker info说:Base Device Size: 26.84 GB
  • 构建时禁用缓存
  • 重新拉出基本图片
  • 停止了docker,从docker目录中删除了所有内容,然后重新启动它

不合适:中间容器中的df -h仍显示10G个磁盘,docker inspect显示"DeviceSize": "10737418240"

我错过了什么?如何增加基本卷大小?

2 个答案:

答案 0 :(得分:0)

我不确定此问题是否已解决。但是,如果有人在2019年(或以后)偶然发现此问题,则解决此类问题的最佳方法是切换到另一个存储后端。

为此,请将所有可保留的Docker数据复制到安全位置。停止Docker守护程序。删除/var/lib/docker(或将其移开,以便在出现任何问题时回滚)。然后重新创建一个空的/var/lib/docker,并添加具有以下内容的文件daemon.json

{
  "storage-driver": "overlay2"
}

然后,重新启动Docker守护程序,人为的10G限制已消失。

有关更多详细信息,请参见文档:https://docs.docker.com/storage/storagedriver/overlayfs-driver/

如果真的无法解决DeviceSize的问题,我记得曾经手工创建过(在dd命令中指的是预期的设备大小),然后再启动Docker守护程序。但是,从今天起,这样做的必要性应该消失了。

答案 1 :(得分:0)

要授予容器访问更多空间的权限,我们需要注意两点:

  1. 确保dockerd以--storage-opt dm.basesize=25G开头
  2. 确保在增加基本尺寸后拉出图像的干净版本。

示例:

  1. 使用以下命令启动dockerd:
    --storage-opt dm.basesize=25G
    
  2. 重新启动 docker守护程序
  3. 在此处检查容器大小将显示旧值10G:
    docker run -it --rm ubuntu:xenial df -h
    
  4. 删除图像并重新拖动
    docker rmi ubuntu:xenial
    docker pull ubuntu:xenial
    
  5. 确认已发生更改,期望值为25G:
    docker run -it --rm ubuntu:xenial df -h
    
相关问题