Zmień katalog danych Dockera

8

Jak mogę zmienić katalog danych Dockera, w którym doker zapisuje kontener (lub gdzie LXC zapisuje kontener)? Mam na swoim serwerze dysk SSD i dysk twardy i chcę, aby kontener został zapisany na dysku twardym. Dzięki

ssd_rider
źródło

Odpowiedzi:

11

Wierzę, że w tym przewodniku znajdziesz dobre wyjaśnienie.

Możesz zmienić katalog podstawowy pamięci Dockera (tam, gdzie idą kontener i obrazy), używając opcji -g podczas uruchamiania demona Docker.

Ubuntu / Debian: edytuj /etc/default/dockerplik z -gopcją:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: edytuj /etc/sysconfig/dockeri dodaj -gopcję w zmiennej other_args: np. other_args="-g /var/lib/testdir". Jeśli jest więcej niż jedna opcja, upewnij się, że umieścisz je w „”. Po ponownym uruchomieniu, (restart dokera usługi) Docker powinien użyć nowego katalogu.

Użycie dowiązania symbolicznego to kolejna metoda zmiany przechowywania obrazów.

Uwaga - Kroki te zależą od tego, czy bieżący katalog / var / lib / docker jest rzeczywistym katalogiem (a nie dowiązaniem symbolicznym do innej lokalizacji).

1) Zatrzymanie doker: service docker stop. Sprawdź, czy w żadnym procesie dokera nie działa ps faux

2) Doker Double Check naprawdę nie działa. Spójrz na bieżący katalog dokerów: ls/var/lib/docker/

2b) Wykonaj kopię zapasową - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Przenieś /var/lib/dockerkatalog na nową partycję:mv /var/lib/docker /mnt/pd0/docker

4) Utwórz dowiązanie symboliczne: ln -s /mnt/pd0/docker /var/lib/docker

5) Rzuć okiem na strukturę katalogów, aby upewnić się, że wygląda tak, jak przed mv: ls /var/lib/docker/(zwróć uwagę na ukośnik końcowy na

6) Uruchom ponownie okno dokowane service docker start

7) zrestartuj swoje pojemniki, usuń dowiązanie symboliczne)

Conrado Fonseca
źródło
jaki jest powód 4)? Czy to jest potrzebne W moim przypadku chciałbym, aby pliki dokerów znajdowały się na zamontowanym macierzy RAID, a nie na partycji rozruchowej.
Roman Mik
9

W nowszych wersjach Docker na Ubuntu będziesz edytować /etc/default/daemon.json tak:

{
    "data-root": "/new/location"
}
MattK
źródło
2

Aby zmienić datakatalog w dockernim należy uruchomić z opcją -g /my/data. W moim /etc/default/dockerustawiłem:

DOCKER_OPTS="-g /srv/docker"

Zobacz także moje notatki tutaj .

Aby zmienić datakatalog w lxc, wstawiam /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Stuart Cardall
źródło
1

Uaktualnij do Docker 1.13.0.

Z informacji o wersji:

- New
The storage location of the Linux volume can now be moved
Snowcrash
źródło
1

Aby rozwinąć odpowiedź @ MattK:

Dokumentacja Docker dotycząca kontrolowania demona Docker sugeruje, że sposobem niezależnym od platformy jest:

edytuj plik /etc/docker/daemon.json, aby zawierał linię

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

gdzie /mnt/docker-datajest katalog, w którym mają mieszkać obrazy dokerów i kontenery.

Następnie

sudo systemctl restart docker

Możesz sprawdzić, czy zadziałało, uruchamiając

docker info

i poszukaj zawartości linii zaczynającej się od Docker Root Dir:.

Zobacz także https://stackoverflow.com/a/50217666/2209313 i https://unix.stackexchange.com/q/452368/36043 .

Wędrująca logika
źródło