docker 使用 Linux 容器为 Windows 导入 Docker 没有 space 留在设备错误上,存储驱动程序:overlay2

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

我正在导入一个 15 GB 的大型数据库图像(我可以毫无问题地导入 9.5 GB 的图像。)使用 Linux 容器 Docker for Windows。我正在使用 Windows 10 Pro 1803, build 17134.1006.

错误:

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

我已按照此处的建议删除了所有悬空卷和未使用的图像:

在阅读存储驱动程序时,我遇到了 devicemapper 和其他驱动程序的一些限制。

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

对于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

我找不到 overlay2 的任何图像限制,默认情况下只有 20 GB 的容器限制。

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

我尝试 运行 示例命令,但出现错误。 dockerd 未映射到命令。

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

既然它无论如何都应该工作,我不确定我是否走在正确的道路上。

系统信息:

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

存储 space 应该不是问题:

我应该学习阅读...阅读它作为 55.29 GB 未使用。在 Docker -> Settings -> Advanced 中增加 Disk image max size 后,一切都开始工作了。