天天看點

docker筆記11--docker build 報錯 devmapper: Thin Pool空間不夠解決方法

docker筆記11--docker build 報錯 devmapper: Thin Pool空間不夠解決方法

  • ​​介紹​​
  • ​​案例​​
  • ​​注意事項​​
  • ​​說明​​

介紹

最近用docker建構鏡像的時候,在中途出現 failed to create rwlayer: devmapper: Thin Poo … less than minimum required 報錯。查閱資料發現是centos 上 docker啟動的時候預設使用了devicemapper存儲驅動,該驅動将docker目錄挂載在 lvm 的分區上,該分區在使用過程中有一系列限制。随後将其調整為經典的 overlay2模式後恢複正常。

案例

docker build 報錯

failed to create rwlayer: devmapper: Thin Pool has 158998 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in      

docker info 資訊

# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 27
 Server Version: 20.10.9
 Storage Driver: devicemapper
  Pool Name: docker-253:16-13893683-pool
  Pool Blocksize: 65.54kB
  Base Device Size: 10.74GB
  Backing Filesystem: xfs
  Udev Sync Supported: true
  Data file: /dev/loop0
  Metadata file: /dev/loop1
  Data loop file: /data2/docker/devicemapper/devicemapper/data
  Metadata loop file: /data2/docker/devicemapper/devicemapper/metadata
  Data Space Used: 94.17GB
  Data Space Total: 107.4GB
  Data Space Available: 13.21GB
  Metadata Space Used: 179.4MB
  Metadata Space Total: 2.147GB
  Metadata Space Available: 1.968GB
  Thin Pool Minimum Free Space: 10.74GB
  Deferred Removal Enabled: true
  Deferred Deletion Enabled: true
  Deferred Deleted Device Count: 0
  Library Version: 1.02.170-RHEL7 (2020-03-24)
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 5b46e404f6b9f661a205e28d59c982d3634148f8
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1160.42.2.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.375GiB
 Name: cnshc-srecicd-p01001
 ID: QXTX:FUSX:QWHJ:7E4H:MPOY:KBDI:DUD7:4PYO:SIDN:ZH73:C2GX:OXDO
 Docker Root Dir: /data2/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release.
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
         Use `--storage-opt dm.thinpooldev`      

由此可以發現, 目前可用 65.54158998/1024/1024=10420728.920000002=10.42GB小于 16384065.54/1024/1024=10738073.600000001=10.74GB, 無法滿足docker 容器運作環境,是以才觸發該問題。

其次,有 devicemapper storage-driver 被丢棄的提示,那麼很明顯可以不使用 devicemapper 的方式。

解決方法:

​​​https://vinayakpandey-7997.medium.com/resolve-thin-pool-free-data-blocks-less-than-minimum-required-error-ffd9af38ba9d​​​ 修改docker 啟動配置中的 Storage Driver 配置為overlay2

​​docker修改存儲驅動為overlay2_qq_38286374的部落格-CSDN部落格_docker 修改overlay2​​

vim /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}      

注意事項

說明