Docker CP

Docker CP
„Bez wątpienia Docker zrewolucjonizował nowoczesne środowisko programistów. Możliwość pakowania aplikacji w jednym pakiecie i wysyłki na dowolną platformę jest rewolucyjna.

Ale wystarczająco chwali się o dokera. W tym artykule omówimy sposób kopiowania plików do iz kontenera do systemu hosta i odwrotnie."

Zacznijmy

Docker CP

Docker CP to narzędzie wiersza poleceń, które pozwala kopiować pliki i katalogi między systemami. Polecenie przyjmuje bardzo prostą składnię, która umożliwia łatwy przepływ pracy.

Składnia polecenia:

Docker CP [Opcje] Kontener: src_path dest_path |-

Narzędzie CP skopiuje pliki określone z src_path do desty_path. To pozwala kopiować z kontenera do systemu hosta i odwrotnie.

Kontener może być uruchomiony lub zatrzymany, a polecenie pomyślnie wykonuje operację kopiowania.

Jeśli określono katalog, polecenie skopiuje rekurencyjnie do określonego miejsca docelowego.

Aby skopiować pliki z systemu hosta do kontenera, możesz użyć składni:

$ Docker CP host_path Container_id: ścieżka

Ta sama składnia polecenia ma zastosowanie, gdy chcesz kopiować pliki z kontenera do systemu hosta:

$ Docker CP Container_id: Src_path host_path

Zobaczmy, jak możemy to osiągnąć za pomocą praktycznych przykładów.

Uzyskaj bieżące pojemniki

Pierwszym krokiem jest uzyskanie nazwisk i identyfikatorów działających kontenerów. Możemy to zrobić z poleceniem Docker PS.

$ Docker Ps

Po uzyskaniu pojemnika i nazwy lub identyfikatora możemy kontynuować. Możesz uzyskać identyfikator w kolumnach identyfikatorów kontenera i nazwisk.

Skopiuj pliki z systemu hosta na kontener

Załóżmy, że mamy plik o nazwie kopie zapasowe.smoł na komputerze systemu hosta i chcesz skopiować go do kontenera Debian11.

Możemy uruchomić polecenie:

Docker CP ~/Desktop/Bacups.Tar Debian11:/Home

Powyższe polecenie skopiuje kopie zapasowe.plik smoły w katalogu domowym określonego kontenera.

Możemy sprawdzić, czy plik istnieje, uruchamiając polecenie:

$ Docker Exec -Ti debian11 /bin /bash

Polecenie powyżej powinno umożliwić zalogowanie się do pojemnika i odrodzenie skorupy bash.

Możesz teraz wymienić pliki i katalogi w kontenerze jako:

root@f657EA827600: /# ls -la /home
Razem 7188
DRWXR-XR-X 1 root root 4096 czerwca 7 02:09 .
DRWXR-XR-X 1 root root 4096 czerwca 7 02: 09…
-RW-R-R-- 1 Root root 7348816 czerwca 7 02:08 Backups.smoła

Widzimy, że plik został pomyślnie skopiowany do kontenera.

Jeśli chcesz użyć identyfikatora kontenera, możesz uruchomić polecenie:

Docker CP ~/Desktop/Bacups.TAR F657EA827600:/Strona główna

UWAGA: Jeśli plik o podobnej nazwie istnieje jako określona ścieżka docelowa, polecenie będzie go zastąpić bez podpowiedzi.

Plik kopiowania dokera z kontenera do hosta

Możemy również użyć polecenia do kopiowania plików z kontenera do systemu hosta. Załóżmy na przykład, że chcemy skopiować dzienniki z kontenera do katalogu logów w folderze stacjonarnym hosta.

Możemy uruchomić polecenie:

$ sudo docker cp debian11:/var/log/~/komputer/logs

W powyższym poleceniu poinformujemy polecenie Docker CP, aby skopiowało pliki z katalogu /var /log w DEBIAN11 do katalogu Logs w systemie hosta.

Możemy to zweryfikować, uruchamiając polecenie:

$ ls -ls ~/Desktop/Logs
Ogółem 72
0 DRWXR-XR-X 3 Korzenie personel 96 maja 27 03:00 Apt
0 -RW-RW ---- 1 Korzenie personel 0 maja 27 03:00 BTMP
8 -RW-R-R-- 1 Korzenie personel 3232 27 maja 03:00 FAILLOG
64 -RW-RW-R-- 1 Korzenie personel 29896 27 maja 03:00 LastLog
0 -RW-RW-R-- 1 Korzenie personel 0 maja 27 03:00 WTMP

Docker CP Preserve Atrybutów

Zauważysz, że po skopiowaniu pliku do systemu hosta Docker nie zachowuje atrybutów, takich jak uprawnienia, UID itp.

Możemy to rozwiązać, dołączając flagę -A w poleceniu Docker CP.

$ Docker CP -a Host_path Contener: Ścieżka
$ Docker Cp -a kontener: ścieżka host_path

Przykładem jest jak pokazano:

Sudo Docker CP -a debian11:/var/log/~/komputer/logs

Widzimy, że uprawnienia są podobne do jednego z skopiowanych plików w kontenerze.

Wniosek

W tym samouczku nauczyłeś się używać polecenia Docker CP do kopiowania plików do iz kontenera Docker do systemu hosta i odwrotnie.

Dziękuje za przeczytanie!!