موقع استفاده از داکر یک نکته بسیار مهم storage driver هست چون اگر به این نکته توجه نشه مشکلات زیادی در استفاده از داکر ایجاد میشه.
نکته ای که هست در centos 7 بصورت پیش فرض در ایجاد درایو ها پارامتر ftpye برابر 0 هست و همین مورد باعث میشه تا داکر از مدل overlay به عنوان storage driver نتونه استفاده کنه و این مورد مشکلات عجیبی ایجاد میکنه .
برای حل این مشکل از طریق روش زیر میتونید ftype رو فعال کنید و مشکل رو حل کنید.
روش انجام کار به این شکل هست که با بوت کردن یه لینوکس ابتدا یه بکاپ از درایو گرفته میشه و بعد ftype فعال میشه و بعد بکاپ برگردونده میشه. توجه داشته باشید که بصورت live امکان تغییر این پارامتر در درایو نیست.
شاید روشش یکم خشن به نظر برسه اما من چند بار امتحان کردم و جواب داده.
برای انجام این روش ابتدا باید server رو با سی دی CentOS-7-x86_64-LiveGNOME-1804.iso بوت کنید.
سپس به ترتیب دستورات زیر را در ترمینال اجرا کنید:
sudo -s
vgscan
در این مرحله باید نام volume group خودتون رو در دستور زیر بزنید.
vgchange -ay centos
lvscan
mkdir /mnt/root
mount /dev/centos/root /mnt/root
در این مرحله یه بکاپ از درایو رو به یک سرور دیگه میفرستید
xfsdump -J - /mnt/root | ssh <host> 'cat >/data/rootfs.dump'
umount /mnt/root
mkfs.xfs -f -n ftype=1 /dev/centos/root
mount /dev/centos/root /mnt/root
ssh <host> 'cat /data/rootfs.dump' | xfsrestore -J - /mnt/root
reboot
و تمام!
حالا اگر وارد سرور بشید و با دستور زیر چک کنید میبینید که پارامتر ftype فعال شده
xfs_info /
حالا باید storage driver داکر رو تغییر بدید
برای این کار این مراحل ر انجام بدید:
systemctl stop docker
cp -au /var/lib/docker /var/lib/docker.bk
Edit /etc/docker/daemon.json :
{
"storage-driver": "overlay2"
}
sudo systemctl start docker
حالا اگر docker info بگیرید میبینید که storage driver عوض شده.
***دقت کنید بعد از تغییر storage driver اگر کانتینری در درایور قبلی داشته باشید لود نمیشه و از اول باید بسازیدش***
نکته ای دیگه که هست اینه که اگر در بروزرسانی داکر مشکلی داشتید باید نسخه کرنل سرور رو هم بروزرسانی کنید
برای این کار هم پستی گذاشتم میتونید به اون مراجعه کنید.