Uneori, poate fi necesar să transferați fișiere dintr-un container Docker în sistemul gazdă în scopuri de backup etc. Acest lucru poate fi realizat cu ușurință pe Linux cu instrumentul docker cp . Iată cum să-l folosești.
xr:d:DAFds8YL9ik:2,j:43601822907,t:23032003
Cum să transferați fișiere dintr-un container Docker la gazdă folosind Docker CP
Dacă trebuie să transferați fișiere în afara containerului Docker către sistemul gazdă, cel mai rapid și mai ușor mod de a face acest lucru este cu instrumentul Docker CP. Pentru a începe, conectați-vă la server prin SSH sau printr-un monitor fizic cu o interfață de terminal .
După ce v-ați autentificat, accesați contul Root. Puteți face acest lucru în două moduri. Fie cu comanda su , fie cu comanda sudo -s .
su
Sau
sudo -s
După conectare, rulați comanda docker ps . Rularea acestei comenzi va afișa toate containerele care rulează. Căutați ID-ul containerului din care intenționați să transferați fișiere. Apoi, utilizați următoarea comandă pentru a vă conecta în container.
Notă: înlocuiți $id cu ID-ul containerului.
docker exec -it $id /bin/bash
Acum că v-ați conectat la containerul Docker folosind comanda docker exec de mai sus, va trebui să navigați în container și să comprimați fișierele pe care doriți să le transferați folosind Docker CP.
În acest exemplu, vom folosi folderul „test” din /root/
director. Va trebui să modificați această comandă pentru a se potrivi nevoilor dvs.
tar -czvf my-archive.tar.gz /root/test/
După comprimarea fișierelor, ieșiți din container. Puteți ieși din interfața terminalului din containerul Docker utilizând următoarea comandă de ieșire .
Ieșire
În cele din urmă, transferați fișierele din container în sistemul gazdă.
docker cp CONTAINER_ID:/path/to/archive.tar.gz /host/system/folder/
Transferarea fișierelor fără compresie
Deși nu este recomandat să transferați fișiere fără a le comprima mai întâi (din motive de siguranță), puteți. Dacă doriți să transferați pur și simplu un director care conține unele fișiere, iată cum să o faceți.
Mai întâi, determinați calea folderului conectându-vă la container. Vă puteți conecta în container cu comenzile de mai jos.
su
docker exec -it $id /bin/bash
După ce ați determinat calea către folderul pe care doriți să-l transferați, ieșiți din container. Apoi, rulați următoarea comandă docker cp .
docker cp CONTAINER_ID:/calea/la/dosarul/dvs./ /gazdă/sistem/dosar/
Cum să transferați fișiere de la gazdă într-un container Docker folosind Docker CP
Pe lângă transferul fișierelor prin containerul Docker către gazdă, este posibil să transferați fișiere de la gazdă înapoi la container. În acesta, găsiți locația fișierelor pe care doriți să le transferați în containerul docker.
Când ați localizat fișierele pe care doriți să le transferați, utilizați următoarea comandă pentru a le comprima. Comprimarea folderului facilitează transferul.
tar -czvf my-archive.tar.gz /path/to/your/folder/
După comprimarea folderului într-o arhivă Tar.GZ, va trebui să obțineți ID-ul containerului în care doriți să transferați fișierele. Mai întâi, conectați-vă la root folosind su sau sudo -s .
su
Sau
sudo -s
După ce vă conectați la contul rădăcină, executați comanda docker ps . Această comandă va afișa informații despre toate containerele care rulează. Puteți apoi să luați aceste informații și să utilizați comanda docker cp pentru a vă transfera arhiva comprimată.
docker ps
docker cp /path/to/my-archive.tar.gz CONTAINER_ID:/path/to/destination/
Transferarea fișierelor fără compresie
Dacă doriți să transferați într-un container fără a comprima nimic, iată cum se face. Mai întâi, conectați-vă la root folosind su sau sudo -s . După ce v-ați conectat ca root, găsiți calea folderului pe care doriți să o transferați.
După ce obțineți calea folderului, utilizați comanda docker ps pentru a obține ID-ul containerului în care doriți să transferați fișierele. Apoi, utilizați următoarea comandă docker cp pentru a copia fișierele în sistemul dvs.
docker cp /cale/spre/my/fișier/dosar/CONTAINER_ID:/cale/spre/destinație/
Cum să transferați fișiere dintr-un container Docker de la gazdă cu Rsync
Utilizarea comenzii docker cp ar trebui să fie suficientă pentru a transfera fișiere către și de la gazde. Cu toate acestea, este, de asemenea, posibil să sincronizați fișierele dintr-un container către gazdă. Rețineți că trebuie să aveți un server SSH activat și care rulează pe mașina gazdă.
Pentru a începe, conectați-vă ca root pe serverul Linux gazdă prin terminal. Vă puteți conecta la contul root folosind su sau sudo -s . După ce vă conectați la contul rădăcină, executați comanda docker ps .
su
Sau
sudo -s
docker ps
Găsiți ID-ul containerului Docker și conectați-vă utilizând comanda de mai jos. Apoi, instalați instrumentul Rsync folosind managerul de pachete al containerului. Asigurați-vă că înlocuiți „$id” cu ID-ul containerului.
docker exec -it $id /bin/bash
După ce ați instalat Rsync folosind managerul de pachete al containerului, utilizați comanda Rsync de mai jos pentru a sincroniza fișierele din container cu gazdă.
rsync -avz -e ssh /cale/la/local/fișiere/ utilizator@la distanță:/cale/la/la distanță/fișiere/