PRISIJUNGTI
    opened image

    Kaip nukopijuoti duomenis iš šeimininko į Docker ir iš Docker į šeimininką

    Kaip matėme iš ankstesnių straipsnių, „Docker“ gali supaprastinti skirtingų programų diegimą ir paleidimą.

    Tačiau kartais reikia perkelti failus iš pagrindinio kompiuterio į „Docker“ konteinerį ir iš konteinerio į pagrindinį kompiuterį.

    Šiame straipsnyje pamatysime, kaip tai padaryti.

     


    Žemiau pateiktos komandos reiškia, kad jau turite įdiegtą „Docker“. Jei neturite, galite sužinoti, kaip tai padaryti straipsniuose: "Kaip įdiegti „Docker“ į „Centos 7“" arba "Kaip įdiegti „Docker“ į „Ubuntu 20.04“".
     

    Failų kopijavimas iš pagrindinio kompiuterio į „Docker“ konteinerį.


    Norint kopijuoti į „Docker“ ir iš jo, naudosime įrankį docker cp.

    Įrankis docker cp kopijuoja turinį iš šaltinio į paskirties vietą.

    Galite kopijuoti iš konteinerio failų sistemos į vietinį kompiuterį arba atvirkščiai, iš vietinės failų sistemos į konteinerį.


    Pavyzdys: Vietinis kompiuteris -> Konteineris

    docker cp <kelias iki failo pagrindiniame kompiuteryje> containerid:<kelias iki failo konteineryje>
    


    Pavyzdys: Konteineris -> Vietinis kompiuteris

     

    docker cp containerid:<kelias iki failo pagrindiniame kompiuteryje> <kelias iki failo pagrindiniame kompiuteryje>
    



    Pažiūrėkime, kaip tai veikia paprasto „Docker“ „Nginx“ paveikslėlio pavyzdyje.

    Galime naudoti šią komandą:

     

     

    docker run -d --name nginx_copy nginx
    

     


    kur:
    nginx_copy - konteinerio pavadinimas (galite naudoti bet kokį)
    nginx - „Docker Hub“ paveikslėlio pavadinimas, kurį naudosime


    Jei neturite šio konteinerio serveryje, palaukite, kol jis bus atsisiųstas. 

    Kaip nukopijuoti duomenis iš šeimininko į Docker ir iš Docker į šeimininką

     

    Dabar pateksime į konteinerį, kad pamatytume / sužinotume, kurį failą kopijuoti ar kaip kopijuoti.

     

     

    docker exec -it nginx_copy /bin/bash
    

     


    Dabar išveskime į terminalą katalogo /etc/nginx turinį

     

     

    ls -la  /etc/nginx/
    

     


    Pavyzdžiui, norime nukopijuoti konfigūracijos failą nginx.conf ir žinome, kad jis yra kelyje /etc/nginx/nginx.conf. Įveskite šią komandą:

     

     

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

     


    Kur:

    nginx_copy - konteineris, iš kurio kopijuojame;
    /etc/nginx/nginx.conf - kelias iki kopijuojamo failo;
    ~/nginx.conf - paskirties vieta ir failo pavadinimas (failo pavadinimą galite nurodyti kitą)

    Dabar pažiūrėkime rezultatą:

     

     

     

    ls -la
    

     


    Kaip nukopijuoti duomenis iš šeimininko į Docker ir iš Docker į šeimininką
    Kaip matome, failas sėkmingai nukopijuotas į pagrindinį kompiuterį. Dabar galime jį pakeisti ir vėl įkelti.

     

     

    Kaip nukopijuoti failą į konteinerį.


    Tarkime, dabar norime pakeistą failą nginx.conf nukopijuoti atgal į konteinerį. Tam galime naudoti šią konstrukciją:

     

     

     

     

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

     


    Jei viskas įvesta teisingai, galėsime matyti šį failą konteineryje.

    Įeikime į konteinerį:

     

     

    docker exec -it nginx_copy /bin/bash
    

     


    Ir išveskime /etc/nginx katalogo sąrašą:

     

     

    ls -la
    

     


    Kaip nukopijuoti duomenis iš šeimininko į Docker ir iš Docker į šeimininką-2
     

    Kaip matome, naujas failas nukopijuotas į konteinerį. 

    Pagal tą patį principą galima perkelti duomenis iš konteinerio į pagrindinį kompiuterį ir atvirkščiai.