Używam Docker Toolbox na OSX.
Utworzyłem kontener objętości danych do przechowywania trwałych danych: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
Sprawdziłem, czy te dane są rzeczywiście przechowywane na maszynie wirtualnej boot2docker (utworzonej przez maszynę dokującą), a nie w kontenerze, aby mogły zostać zachowane. Jednak „restart maszyny dokującej” usuwa te niestandardowe dane z maszyny wirtualnej.
Nie mogę znaleźć dokumentacji dotyczącej tego, co się dzieje. Znalazłem jeden post na forum, w którym wspomniano, że dane w / var / lib / docker zostaną zachowane, ale nie mogłem znaleźć żadnych oficjalnych dokumentów stwierdzających to, i wydaje się to również dziwne, biorąc pod uwagę, że powyższy przewodnik dotyczący przechowywania nie korzysta z tej ścieżki ani nawet nie wspomina o tym twoje dane zostaną usunięte.
Czy jest to oczekiwane, a jeśli tak, to czy istnieje oficjalna dokumentacja na właściwej ścieżce do przechowywania trwałych danych?
Edycja: dodanie przykładu nieudanego senario
$ docker-machine ssh alt
docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
hello
docker@alt:~$ exit
$ docker-machine restart alt
Starting VM...
$ docker-machine ssh alt
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
cat: can't open '/var/lib/mysql/hello': No such file or directory
Nie używam boot2docker, ale jeśli / dane zostaną wyczyszczone przy ponownym uruchomieniu, tam jest przechowywany twój wolumin (
docker run -v /data:/var/lib/mysql
), więc zostanie utracony.To, co robisz, to także łączenie dwóch różnych wzorców radzenia sobie z utrzymywaniem głośności. Aby uzyskać trwałość, kontenery mogą montować woluminy z określonej lokalizacji w systemie hosta (który jest uważany za trwały) lub mogą być powiązane z kontenerem danych i montowane
--volumes-from
. Wygląda na to, że podejście do systemu plików hosta nie jest odpowiednie dla boot2docker i powinieneś użyć wzorca woluminu danych (tylko).Prawdopodobnie powinieneś tworzyć swój kontener danych
-v /var/lib/mysql
, zamiast-v /data:/var/lib/mysql
.źródło
Zauważ, że używam dokera dla Mac beta, który używa xhyve vm.
Zawartość / var / lib / boot2docker będzie utrwalana między restartami komputera. Więc jeśli chcesz, aby niektóre pliki były dostępne w twoim vm, umieść je w tym katalogu.
Jeśli chcesz, aby były one dostępne w innym miejscu do uruchamiania kontenerów dokerów, możesz dodać następujące opcje do / var / lib / boot2docker / profile:
Jeśli chcesz dodać inną konfigurację do plików systemowych, które będą się utrzymywać między restartami vm, takie jak dodatkowe wartości w pliku hosts, możesz dodać polecenie takie jak poniższe do / var / lib / boot2docker / profile:
Mam nadzieję, że to pomoże
źródło