docker默认启动一个100g的loop设备用于存储image和container的运行空间。
生产环境必须修改,不能使用默认生成的loop设备:只有100g大小。而且受制于root所在目录空间(要是free space少于100g,则100g也用不到)
官方文档里面有修改办法:
https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production
这里根据官方文档列出一个修改脚本。
https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production
parted --script /dev/sdb "mklabel gpt"
parted --script /dev/sdc "mklabel gpt"
parted --script /dev/sdb "mkpart primary 0% 100%"
parted --script /dev/sdc "mkpart primary 0% 100%"
parted --script /dev/sdb "set 1 raid on"
parted --script /dev/sdc "set 1 raid on"
yum install -y mdadm
echo "y" | mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
pvcreate /dev/md0
vgcreate docker /dev/md0
lvcreate --wipesignatures y -n thinpool docker -l 90%VG
lvcreate --wipesignatures y -n thinpoolmeta docker -L 10G
lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
tee /etc/lvm/profile/docker-thinpool.profile <<EOF
activation {
thin_pool_autoextend_threshold=80
thin_pool_autoextend_percent=20
}
EOF
lvchange --metadataprofile docker-thinpool docker/thinpool
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<EOF
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/docker-thinpool",
"dm.use_deferred_removal=true",
"dm.use_deferred_deletion=true"
]
}
EOF
systemctl stop docker
rm -rf /var/lib/docker/*
systemctl daemon-reload
systemctl start docker
docker info > txt 2>txt
msg=`cat txt |grep -o "WARNING: Usage of loopback"`
echo $msg
if [ -n "$msg" ];then
echo "ERROR:Failed to setup Loop!!!!"
fi
rm -rf txt