บังเอิญ (จริงๆ ก็คิดไว้แล้วว่าต้องมีวันนี้) วันที่ Docker Host ที่วางไว้ใช้สำหรับให้น้องๆ ได้ Dev เกิด Harddisk เต็มแต่ติดปัญหาที่ว่า แต่ละตัวก็ไม่ใช่ Docker ที่จะ Commit แล้วสร้างขึ้นใหม่ได้ (ทั้งข้อมูลก็ไม่ควรที่จะเป็น docker image แต่อย่างใด แต่ก็ลบไม่ได้) สิ่งที่คิดได้อย่างเดียวคือ "ย้าย" มันไปไว้ Harddisk ลูกอื่นซะ
แต่ยังไงหละที่จะไม่ทำให้ข้อมูลหาย หรือย้ายไปแล้วยังสามารถใช้งานได้อยู่ อ่านๆไปอ่านๆ ก็ตกลงปลงใจที่จะใช้ประยุกต์จาก https://github.com/moby/moby/issues/3127 ดังนี้
ขั้นแรก ปิด Docker ก่อนเลย
sudo service docker stop
จากนั้นสร้าง Directory ปลายทาง ที่ต้องการซึ่งจะอยู่บน HDD อีกลูก (ในที่นี้สมมุติไปที่ /somewhere/extra) แล้วจัดการย้ายไฟล์
sudo mkdir -p /somewhere/extra
sudo rsync -av --progress /var/lib/docker/* /somewhere/extra/
จากนั้นเพิ่ม parameter ให้ dockerd เพื่อที่จะอ่านค่าที่อยู่ใหม่โดยทำได้ 2 วิธีคือ แก้ไขไฟล์ /etc/default/docker
โดยเพิ่ม
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -g /mnt/extra/docker"
หรือหากใครใช้ไฟล์ /etc/docker/daemon.json
ก็สามารถแก้ไขไฟล์นี้โดยเพิ่ม
{
...
"data-root": "/somewhere/extra",
...
}
สวดมนต์และภาวนา จากนั้นก็เปิด Docker ได้เลย
sudo service docker start
หากว่าทุกอย่างกลับมาอย่างปกติ ก็ลบ /var/lib/docker
ออกได้เลยครับ
ไม่ยาก แต่ลุ้นโคตรๆ
May the force be with you. :)
Top comments (0)