แก้ปัญหา Docker build ฟ้อง No space left on device

Posted on
docker

กำลังแก้ script Dockerfile สลับกับการ build อยู่ดีๆ ก็เจอข้อความ **No space left on device** ไปต่อไม่ได้แล้ว ประมาณว่าพื้นที่ที่ docker ใช้ในการสร้าง file ต่างๆมันเต็มโควต้าแล้ว

ใช้ 3 คำสั่งนี้ แล้วทำให้มีพื้นที่คืนกลับมา สั่ง build งานต่อได้เสมอ

1 ลบ file ของ container ที่มีสถานะ exited

docker rm $(docker ps -q -f 'status=exited')

2 ลบ file image ที่(ห้อยต่องแต่ง)ไม่มีการอ้างอิงถึง

docker rmi $(docker images -q -f "dangling=true")

3 ลบตัว disk/volume ที่ไม่มีการอ้างอิงถึง บางครั้งสั่งคำสั่งนี้อาจจะไม่ได้ลบอะไรเลย ต้องสั่ง 2 ตัวข้างบนก่อน

docker volume rm $(docker volume ls -qf dangling=true)

_** ถ้า upgrade docker CE เป็น version 17.12.0-ce-mac47 2018-01-12 แล้วเราจะไปเปลี่ยนขนาดของ disk ที่ docker สามารถใช้ได้ได้เองแล้ว ไปที่ Preferences_

ถ้าใช้ docker ตั้งแต่ version 1.13 เป็นต้นมา สามารถใช้คำสั่ง docker system prune เพื่อลบไฟล์ที่อาจจะไม่ได้ใช้งานแล้วออก

❯ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all build cache