Ubah direktori data Docker

8

Bagaimana saya bisa mengubah direktori data Docker di mana buruh pelabuhan menyimpan wadah (atau di mana lxc menyimpan wadah)? Saya punya di server saya SSD dan semut hard drive. Saya ingin agar wadahnya disimpan di hard drive. Terima kasih

ssd_rider
sumber

Jawaban:

11

Saya percaya bahwa dalam panduan ini Anda akan memiliki penjelasan yang bagus.

Anda dapat mengubah direktori basis penyimpanan Docker (tempat penampung dan gambar) menggunakan opsi -g saat memulai daemon Docker.

Ubuntu / Debian: edit /etc/default/dockerfile Anda dengan -gopsi:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: edit /etc/sysconfig/docker, dan tambahkan -gopsi dalam variabel other_args: ex. other_args="-g /var/lib/testdir". Jika ada lebih dari satu opsi, pastikan Anda menyertakannya di "". Setelah restart, (service docker restart) Docker harus menggunakan direktori baru.

Menggunakan symlink adalah metode lain untuk mengubah penyimpanan gambar.

Perhatian - Langkah-langkah ini tergantung pada / var / lib / docker Anda saat ini menjadi direktori aktual (bukan symlink ke lokasi lain).

1) Berhenti buruh pelabuhan: service docker stop. Verifikasi tidak ada proses buruh pelabuhan menjalankan ps faux

2) Periksa buruh pelabuhan benar-benar tidak berjalan. Lihatlah direktori buruh pelabuhan saat ini: ls/var/lib/docker/

2b) Buat cadangan - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Pindahkan /var/lib/dockerdirektori ke partisi baru Anda:mv /var/lib/docker /mnt/pd0/docker

4) Buat symlink: ln -s /mnt/pd0/docker /var/lib/docker

5) Coba intip struktur direktori untuk memastikannya terlihat seperti sebelum mv: ls /var/lib/docker/(perhatikan trailing slash untuk

6) Mulai kembali buruh pelabuhan service docker start

7) restart wadah Anda, selesaikan symlink)

Conrado Fonseca
sumber
apa alasan untuk 4)? Apakah itu dibutuhkan? Dalam kasus saya, saya ingin memiliki file docker pada RAID yang dipasang, dan bukan pada partisi boot.
Roman Mik
9

Dalam versi Docker yang lebih baru di Ubuntu Anda akan mengedit /etc/default/daemon.json seperti:

{
    "data-root": "/new/location"
}
MattK
sumber
2

Untuk mengubah datadirektori di dockerdalamnya perlu dijalankan dengan opsi -g /my/data. Di /etc/default/dockerset I saya :

DOCKER_OPTS="-g /srv/docker"

Lihat juga catatan saya di sini .

Untuk mengubah datadirektori lxcsaya masukkan /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Stuart Cardall
sumber
1

Tingkatkan ke Docker 1.13.0.

Dari Catatan Rilis:

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

Untuk memperluas jawaban @ MattK:

The dokumentasi Docker pada pengendalian daemon Docker menunjukkan bahwa cara platform independen untuk melakukan ini adalah:

edit file /etc/docker/daemon.json agar mengandung baris

{
    "data-root": "/mnt/docker-data",
    (...)
}

di mana /mnt/docker-datadirektori tempat Anda ingin menyimpan gambar dan wadah buruh pelabuhan.

Kemudian

sudo systemctl restart docker

Anda dapat memeriksa apakah itu berfungsi dengan menjalankan

docker info

dan cari konten baris yang dimulai dengan Docker Root Dir:.

Lihat juga https://stackoverflow.com/a/50217666/2209313 dan https://unix.stackexchange.com/q/452368/36043 .

Logika Pengembaraan
sumber