Search code examples
dockerdocker-for-windows

docker import with Docker for Windows using Linux containers no space left on device error with Storage Driver: overlay2


I'm importing a large database image at 15 GB (I can import an image of 9.5 GB without a problem.) with Docker for Windows using Linux containers. I'm using Windows 10 Pro 1803, build 17134.1006.

Error:

PS C:\WINDOWS\system32> docker import "C:\Users\oscar\Desktop\MSSQL.tar" mssql
Error response from daemon: Error processing tar file(exit status 1): write /var/opt/mssql/data/TestDatabase.mdf: no space left on device

I have removed all dangling volumes and unused images as suggested here:

https://stackoverflow.com/a/37287054/3850405

When reading about storage drivers I came across some limitations for devicemapper and other drivers.

https://docs.docker.com/engine/reference/commandline/dockerd/#options-per-storage-driver

For devicemapper:

Specifies the size to use when creating the base device, which limits the size of images and containers. The default value is 10G. Note, thin devices are inherently “sparse”, so a 10G device which is mostly empty doesn’t use 10 GB of space on the pool. However, the filesystem will use more space for the empty case the larger the device is.

https://docs.docker.com/engine/reference/commandline/dockerd/#dmbasesize

I can't find any image limitation for overlay2, only 20 GB limit for containers as default.

Specifies the size to use when creating the sandbox which is used for containers. Defaults to 20G.

I tried to run the example command but I got an error. dockerd is not mapped to command.

C:\>dockerd --storage-opt size=40G
'dockerd' is not recognized as an internal or external command,
operable program or batch file.

https://docs.docker.com/engine/reference/commandline/dockerd/#size

Since it should work anyway I'm not sure I'm on the right path there.

System information:

PS C:\WINDOWS\system32> docker --version
Docker version 19.03.2, build 6a30dfc

PS C:\WINDOWS\system32> docker info
Client:
 Debug Mode: false

Server:
 Containers: 5
  Running: 0
  Paused: 0
  Stopped: 5
 Images: 8
 Server Version: 19.03.2
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 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: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.9.184-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.837GiB
 Name: docker-desktop
 ID: XD32:TQJ4:EKWP:BPE4:ETXW:XFXE:LB3L:J4WB:PCFR:DAXK:MJ62:47RI
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 28
  Goroutines: 42
  System Time: 2019-09-17T10:00:50.1259999Z
  EventsListeners: 1
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

Storage space should not be an issue:

enter image description here


Solution

  • I should learn to read... read it as 55.29 GB unused. After increasing Disk image max size in Docker -> Settings -> Advanced everything started working.

    enter image description here