ฉันจะเปลี่ยนไดเรกทอรีข้อมูลของ Docker โดยที่นักเทียบท่าบันทึกคอนเทนเนอร์ได้อย่างไร (หรือที่ใดที่ lxc บันทึกคอนเทนเนอร์) ฉันมีในเซิร์ฟเวอร์ของฉัน SSD และมดฮาร์ดไดรฟ์ฉันต้องการภาชนะจะถูกบันทึกไว้ในฮาร์ดไดรฟ์ ขอบคุณ
ฉันจะเปลี่ยนไดเรกทอรีข้อมูลของ Docker โดยที่นักเทียบท่าบันทึกคอนเทนเนอร์ได้อย่างไร (หรือที่ใดที่ lxc บันทึกคอนเทนเนอร์) ฉันมีในเซิร์ฟเวอร์ของฉัน SSD และมดฮาร์ดไดรฟ์ฉันต้องการภาชนะจะถูกบันทึกไว้ในฮาร์ดไดรฟ์ ขอบคุณ
คำตอบ:
ฉันเชื่อว่าในคำแนะนำนี้คุณจะได้คำอธิบายที่ดี
คุณสามารถเปลี่ยนไดเร็กทอรีฐานหน่วยเก็บข้อมูลของ Docker (ที่ซึ่งคอนเทนเนอร์และอิมเมจไป) โดยใช้อ็อพชัน -g เมื่อเริ่มต้น Docker daemon
Ubuntu / Debian: แก้ไข
/etc/default/docker
ไฟล์ของคุณด้วย-g
ตัวเลือก:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
Fedora / Centos: แก้ไข
/etc/sysconfig/docker
และเพิ่ม-g
ตัวเลือกในตัวแปร other_args: exother_args="-g /var/lib/testdir"
. หากมีมากกว่าหนึ่งตัวเลือกตรวจสอบให้แน่ใจว่าคุณใส่ไว้ใน "" หลังจากการรีสตาร์ท (รีสตาร์ทนักเทียบท่าบริการ) นักเทียบท่าควรใช้ไดเรกทอรีใหม่การใช้ symlink เป็นวิธีการอื่นในการเปลี่ยนที่เก็บรูปภาพ
ข้อควรระวัง - ขั้นตอนเหล่านี้ขึ้นอยู่กับ / var / lib / docker ปัจจุบันของคุณซึ่งเป็นไดเรกทอรีจริง (ไม่ใช่ symlink ไปยังตำแหน่งอื่น)
1)
service docker stop
นักเทียบท่าหยุด: ตรวจสอบว่าไม่มีกระบวนการนักเทียบท่ากำลังรัน ps faux2) ตรวจสอบนักเทียบท่าจริง ๆ ไม่ทำงาน ลองดูที่ไดเรกทอรีนักเทียบท่าปัจจุบัน: ls
/var/lib/docker/
2b) ทำการสำรองข้อมูล -
tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz
3) ย้าย
/var/lib/docker
ไดเรกทอรีไปยังพาร์ติชันใหม่ของคุณ:mv /var/lib/docker /mnt/pd0/docker
4) สร้าง symlink:
ln -s /mnt/pd0/docker /var/lib/docker
5) ดูโครงสร้างไดเรคทอรีเพื่อให้แน่ใจว่าดูเหมือนว่าทำก่อน mv:
ls /var/lib/docker/
(สังเกตเครื่องหมายสแลชต่อท้ายเพื่อ6) เริ่มนักเทียบท่าสำรอง
service docker start
7) รีสตาร์ทคอนเทนเนอร์ของคุณแก้ไข symlink)
ในเวอร์ชันล่าสุดของ Docker บน Ubuntu คุณจะแก้ไข /etc/default/daemon.json ดังนี้:
{
"data-root": "/new/location"
}
เมื่อต้องการเปลี่ยนdata
ไดเรกทอรีในจะต้องมีการทำงานที่มีตัวเลือกdocker
-g /my/data
ใน/etc/default/docker
ชุดของฉัน:
DOCKER_OPTS="-g /srv/docker"
ดูบันทึกของฉันที่นี่ด้วย
หากต้องการเปลี่ยนdata
ไดเรกทอรีในlxc
ฉันใส่ใน/etc/lxc/lxc.conf
:
lxc.lxcpath = /srv/lxc
อัพเกรดเป็นนักเทียบท่า 1.13.0
จากบันทึกย่อประจำรุ่น:
- New
The storage location of the Linux volume can now be moved
หากต้องการขยายคำตอบของ @ MattK:
เอกสารเทียบท่าในการควบคุมภูตหางชี้ให้เห็นว่าวิธีแพลตฟอร์มอิสระที่จะทำคือ:
แก้ไขไฟล์ /etc/docker/daemon.json เพื่อให้มีบรรทัด
{
"data-root": "/mnt/docker-data",
(...)
}
โดยที่/mnt/docker-data
เป็นไดเร็กตอรี่ที่คุณต้องการให้อิมเมจและคอนเทนเนอร์ของนักเทียบเคียงอยู่
แล้วก็
sudo systemctl restart docker
คุณสามารถตรวจสอบว่ามันทำงานโดยการทำงาน
docker info
Docker Root Dir:
และมองหาเนื้อหาของบรรทัดที่ขึ้นต้นด้วย
ดูเพิ่มเติมhttps://stackoverflow.com/a/50217666/2209313และhttps://unix.stackexchange.com/q/452368/36043