【问题标题】:Docker CannotCreateContainerError: Thin Pool has 0 free data blocksDocker CannotCreateContainerError: Thin Pool 有 0 个空闲数据块
【发布时间】:2021-09-17 06:09:53
【问题描述】:

我正在尝试使用需要使用 docker 的 AWS(EC2 实例)运行 Nextflow 管道,但出现以下错误:

CannotCreateContainerError: Error response from daemon: devmapper: Thin Pool has 0 free data blocks which is less than minimum required 4449 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

发现这个错误后,我的管道完全死了。我在网上找到的这个问题最常见的答案是做一个 docker system prune,这样我可以释放一些空间,但是这样做之后错误仍然存​​在,并且空闲数据块仍然是 0。

我的猜测是我无法访问数据块,但由于这是我第一次使用 Docker,我完全迷失了。

如果有趣的话,如果我运行 docker info:

Client:
 Debug Mode: false

Server:
 Containers: 4
  Running: 0
  Paused: 0
  Stopped: 4
 Images: 22
 Server Version: 19.03.13-ce
 Storage Driver: devicemapper
  Pool Name: docker-docker--pool
  Pool Blocksize: 524.3kB
  Base Device Size: 536.9GB
  Backing Filesystem: ext4
  Udev Sync Supported: true
  Data Space Used: 14.55GB
  Data Space Total: 23.33GB
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.thinpooldev=/dev/mapper/docker-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true   Data Space Available: 8.782GB
  Metadata Space Used: 4.891MB
  Metadata Space Total: 25.17MB
  Metadata Space Available: 20.28MB
/*
  Thin Pool Minimum Free Space: 2.333GB
  Deferred Removal Enabled: true
  Deferred Deletion Enabled: true
  Deferred Deleted Device Count: 0
  Library Version: 1.02.135-RHEL7 (2016-11-16)
 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: c623d1b36f09f8ef6536a057bd658b3aa8632828
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0 (expected: fec3683)
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.14.225-121.362.amzn1.x86_64
 Operating System: Amazon Linux AMI 2018.03
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 985.5MiB
 Name: ip-172-31-33-79
 ID: QBVF:B7D5:3KRH:3BYR:UU27:XEUW:RWLE:SLAW:F6AG:LKD2:FD3E:LHLQ
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

关于如何解决这个问题的任何线索?

【问题讨论】:

  • 当您尝试手动拉动容器时会发生什么,即docker pull ...
  • 它工作正常。我已经尝试过使用我正在使用的 docker 镜像和不同的镜像,并且拉取完成了。
  • 很奇怪。我预计那会失败。我更多地查看了您上面的 docker 信息,并注意到两件事:(1)您的 docker 存储驱动程序(devicemapper)已被弃用,(2)您的 Amazon Linux AMI 也已被弃用。如果您使用Amazon Linux 2 AMI,您的 new docker 将使用 overlay2 存储驱动程序,这是 docker 的首选存储驱动程序。我同意,您不需要升级。但这可能是最容易尝试的方法,除非您与此实例相关联。
  • 您是否正在向 AWS Batch 提交作业?或者只是在单个强大的 EC2 实例(即本地)上运行您的工作流程?
  • 显然,是的,它已被弃用。升级后一切正常:)(我正在使用 AWS Batch)。非常感谢!

标签: amazon-web-services docker nextflow


【解决方案1】:

看着你上面的docker info,我注意到两件事:

  1. 您的 Docker 存储驱动程序 (devicemapper) 已弃用,并且
  2. 您的 Amazon Linux AMI 也已弃用。

我认为,如果您使用较新的 Amazon Linux 2 AMI,您的新 Docker 将使用 overlay2 存储驱动程序,这是 Docker 的首选存储驱动程序。 您不需要升级,但它可能是最容易尝试的方法,除非您绑定到此实例。

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2022-11-24
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多