老高的容器在运行一段时间的时候会突然无法写入数据,报错

docker no space left on device

Google之,发现原来是Base Device Size的问题,其默认值是10G,而容器经过一段时间的运行写入文件量早已超过10G,就造成无法写入数据的问题了。

下面给出解决方案:

系统为Centos,其他OP应该大同小异。

首先查看docker的服务配置文件

/etc/systemd/system/docker.service

cat /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
ExecStart=/usr/bin/docker daemon --registry-mirror=https://hg3r3yxx.mirror.aliyuncs.com $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
TimeoutStartSec=1min
Restart=on-failure

[Install]
WantedBy=multi-user.target

我们只关心其中的ExecStart一节,于是发现守护进程启动命令中已经预留**$DOCKER_STORAGE_OPTIONS**变量,并且应该存在于这个文件中 /etc/sysconfig/docker-storage。这就好办了,直接把老高想改成的40G写入到此文件中即可!

sudo echo "DOCKER_STORAGE_OPTIONS=--storage-opt dm.basesize=40G" > /etc/sysconfig/docker-storage

标签: docker

添加新评论