Docker
Woluminy danych i kontenery danych
Szukaj…
Kontenery tylko z danymi
Kontenery tylko danych są przestarzałe i są teraz uważane za anty-wzór!
W dawnych czasach, przed komendą volume
Dockera i zanim możliwe było utworzenie nazwanych woluminów, Docker usunął woluminy, gdy nie było już żadnych odniesień do nich w żadnych kontenerach. Kontenery tylko danych są przestarzałe, ponieważ Docker umożliwia teraz tworzenie nazwanych woluminów, a także wiele innych narzędzi za pomocą różnych docker volume
dokowanych. Z tego powodu kontenery zawierające tylko dane są obecnie uważane za anty-wzór.
Wiele zasobów w Internecie z ostatnich kilku lat wspomina o użyciu wzorca zwanego „kontenerem tylko danych”, który jest po prostu kontenerem Docker, który istnieje tylko po to, aby zachować odniesienie do ilości danych w pobliżu.
Pamiętaj, że w tym kontekście „wolumin danych” to wolumin Docker, który nie jest montowany z hosta. Aby to wyjaśnić, „wolumin danych” jest woluminem utworzonym albo za pomocą dyrektywy VOLUME
Dockerfile, albo za pomocą przełącznika -v
w wierszu polecenia w poleceniu docker run
dokera, a konkretnie w formacie -v /path/on/container
. Dlatego „kontener tylko danych” to kontener, którego jedynym celem jest podłączenie woluminu danych, który jest używany przez --volumes-from
w poleceniu docker run
--volumes-from
. Na przykład:
docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true
Po uruchomieniu powyższej komendy tworzony jest „kontener tylko danych”. Jest to po prostu pusty pojemnik z dołączonym woluminem danych. Następnie można było użyć tego woluminu w innym kontenerze, takim jak:
docker run -d --name="mysql" --volumes-from="mysql-data" mysql
Kontener mysql
ma teraz ten sam wolumin, co również mysql-data
.
Ponieważ Docker udostępnia teraz podkomendę volume
i nazwane woluminy, ten wzorzec jest teraz przestarzały i nie jest zalecany.
Aby rozpocząć korzystanie z podkomendy volume
i nazwanych woluminów, zobacz Tworzenie nazwanego woluminu
Tworzenie woluminu danych
docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql
To polecenie tworzy nowy kontener z obrazu mysql
. Tworzy również nowy wolumin danych, który następnie montuje w kontenerze w /var/lib/mysql
. Ten wolumin pomaga w przechowywaniu danych w nim przechowywanych poza okresem użytkowania kontenera. Oznacza to, że po usunięciu kontenera zmiany systemu plików również zostają usunięte. Jeśli baza danych przechowywała dane w kontenerze, a kontener został usunięty, wszystkie te dane również zostały usunięte. Woluminy utrzymają określoną lokalizację nawet poza nią, gdy pojemnik zostanie wyjęty.
Możliwe jest użycie tego samego woluminu w wielu kontenerach z --volumes-from
wiersza poleceń:
docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql
Do kontenera mysql-2
teraz podłączony wolumin danych z mysql-1
, również przy użyciu ścieżki /var/lib/mysql
.