ZALOGUJ
    opened image

    Jak widzieliśmy z poprzednich artykułów, Docker może ułatwić wdrażanie różnych aplikacji i ich uruchamianie.

    Ale czasami musisz przesyłać pliki z maszyny hosta do kontenera Docker i z kontenera na hosta.

    W tym artykule dowiemy się, jak to zrobić.

     


    Poniższe polecenia zakładają, że Docker jest już zainstalowany. Jeśli nie, możesz dowiedzieć się, jak to zrobić w artykułach: "Jak zainstalować Dockera na Centos 7" lub "Jak zainstalować Dockera na Ubuntu 20.04".
     

    Kopiowanie plików z systemu hosta do kontenera Docker.


    Aby skopiować do i z Docker, użyjemy narzędzia docker cp.

    Narzędzie docker cp kopiuje zawartość źródła do miejsca docelowego.

    Możesz kopiować z systemu plików kontenera na komputer lokalny lub odwrotnie, z lokalnego systemu plików do kontenera.


    Przykład: Lokalny host -> Kontener

    docker cp <ścieżka do pliku na maszynie hosta> containerid:<ścieżka do pliku w kontenerze>
    


    Przykład: Kontener -> Lokalny host

     

    docker cp containerid:<ścieżka do pliku na maszynie hosta> <ścieżka do pliku na maszynie hosta>
    



    Zobaczmy to w akcji na prostym przykładzie obrazu Docker Nginx.

    Możemy użyć następującego polecenia:

     

     

    docker run -d --name nginx_copy nginx
    

     


    gdzie:
    nginx_copy - nazwa kontenera (możesz użyć dowolnej)
    nginx - nazwa obrazu na Docker Hub, który będziemy używać


    Jeśli nie masz tego kontenera na serwerze, poczekaj, aż zostanie pobrany. 


     

    Teraz wejdźmy do kontenera, aby zobaczyć/gdzie skopiować plik.

     

     

    docker exec -it nginx_copy /bin/bash
    

     


    Teraz wyświetl zawartość folderu /etc/nginx w terminalu

     

     

    ls -la  /etc/nginx/
    

     


    Na przykład, chcemy skopiować plik konfiguracyjny nginx.conf i wiemy, że znajduje się pod ścieżką /etc/nginx/nginx.conf. Wprowadź następujące polecenie:

     

     

    docker cp nginx_copy:/etc/nginx/nginx.conf ~/nginx.conf
    

     


    Gdzie:

    nginx_copy - kontener, z którego kopiujemy;
    /etc/nginx/nginx.conf - ścieżka do pliku, który chcemy skopiować;
    ~/nginx.conf - miejsce docelowe i nazwa pliku (nazwę pliku można zmienić)

    Teraz zobaczmy wynik:

     

     

     

    ls -la
    

     



    Jak widać, plik został pomyślnie skopiowany na hosta. Teraz możemy go zmienić, a następnie ponownie go załadować.

     

     

    Jak skopiować plik do kontenera.


    Załóżmy teraz, że chcemy skopiować zmieniony plik nginx.conf z powrotem do kontenera. Możemy skorzystać z następującej konstrukcji:

     

     

     

     

    docker cp ~/nginx.conf nginx_copy:/etc/nginx/nginx.conf_cp
    

     


    Jeśli wszystko zostało wprowadzone poprawnie, będziemy mogli zobaczyć ten plik w kontenerze.

    Wejdźmy do kontenera:

     

     

    docker exec -it nginx_copy /bin/bash
    

     


    I wyświetl listę katalogu /etc/nginx:

     

     

    ls -la
    

     



     

    Jak możemy zobaczyć, nowy plik został skopiowany do wnętrza kontenera. 

    Według tego samego zasady można przenosić dane z kontenera na hosta i odwrotnie.