เปลี่ยนไดเรกทอรีข้อมูลของ Docker


8

ฉันจะเปลี่ยนไดเรกทอรีข้อมูลของ Docker โดยที่นักเทียบท่าบันทึกคอนเทนเนอร์ได้อย่างไร (หรือที่ใดที่ lxc บันทึกคอนเทนเนอร์) ฉันมีในเซิร์ฟเวอร์ของฉัน SSD และมดฮาร์ดไดรฟ์ฉันต้องการภาชนะจะถูกบันทึกไว้ในฮาร์ดไดรฟ์ ขอบคุณ

คำตอบ:


11

ฉันเชื่อว่าในคำแนะนำนี้คุณจะได้คำอธิบายที่ดี

คุณสามารถเปลี่ยนไดเร็กทอรีฐานหน่วยเก็บข้อมูลของ 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: ex other_args="-g /var/lib/testdir". หากมีมากกว่าหนึ่งตัวเลือกตรวจสอบให้แน่ใจว่าคุณใส่ไว้ใน "" หลังจากการรีสตาร์ท (รีสตาร์ทนักเทียบท่าบริการ) นักเทียบท่าควรใช้ไดเรกทอรีใหม่

การใช้ symlink เป็นวิธีการอื่นในการเปลี่ยนที่เก็บรูปภาพ

ข้อควรระวัง - ขั้นตอนเหล่านี้ขึ้นอยู่กับ / var / lib / docker ปัจจุบันของคุณซึ่งเป็นไดเรกทอรีจริง (ไม่ใช่ symlink ไปยังตำแหน่งอื่น)

1) service docker stopนักเทียบท่าหยุด: ตรวจสอบว่าไม่มีกระบวนการนักเทียบท่ากำลังรัน ps faux

2) ตรวจสอบนักเทียบท่าจริง ๆ ไม่ทำงาน ลองดูที่ไดเรกทอรีนักเทียบท่าปัจจุบัน: 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)


เหตุผลสำหรับ 4) คืออะไร? มันจำเป็นหรือไม่ ในกรณีของฉันฉันต้องการให้ไฟล์ docker อยู่ใน RAID ที่ติดตั้งไม่ใช่ในพาร์ติชันสำหรับบูต
Roman Mik

9

ในเวอร์ชันล่าสุดของ Docker บน Ubuntu คุณจะแก้ไข /etc/default/daemon.json ดังนี้:

{
    "data-root": "/new/location"
}

2

เมื่อต้องการเปลี่ยนdataไดเรกทอรีในจะต้องมีการทำงานที่มีตัวเลือกdocker -g /my/dataใน/etc/default/dockerชุดของฉัน:

DOCKER_OPTS="-g /srv/docker"

ดูบันทึกของฉันที่นี่ด้วย

หากต้องการเปลี่ยนdataไดเรกทอรีในlxcฉันใส่ใน/etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc


1

อัพเกรดเป็นนักเทียบท่า 1.13.0

จากบันทึกย่อประจำรุ่น:

- New
The storage location of the Linux volume can now be moved

1

หากต้องการขยายคำตอบของ @ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.