docker cp în Docker

Containere Docker 1.8+

Copiază fișiere sau directoare între container și sistemul gazdă.

Sintaxă comandă
docker cp [opțiuni] container:sursă destinație | docker cp [opțiuni] sursă container:destinație

Ce face docker cp

Comanda docker cp copiază fișiere în ambele direcții între sistemul de fișiere al gazdei și cel al unui container. Partea care se referă la container are forma nume_container:/cale.

Funcționează atât pe containere care rulează, cât și pe cele oprite, ceea ce o face utilă pentru a recupera jurnale sau fișiere generate dintr-un container care a eșuat. Nu necesită ca imaginea să conțină tar sau un shell.

Pentru sincronizare permanentă între gazdă și container (de exemplu codul sursă în dezvoltare) folosește un bind mount, nu copieri repetate.

Opțiuni și argumente

Opțiune / Parametru Descriere
container:cale Calea din container; poate fi absolută sau relativă la rădăcina containerului.
cale_locală Calea de pe gazdă; - înseamnă stdin/stdout ca arhivă tar.
-a, --archive Păstrează proprietarul (UID/GID) fișierelor.
-L, --follow-link Urmează legăturile simbolice din sursă.
-q, --quiet Nu afișa progresul copierii (Docker 24+).

Exemple

Exemplul 1: Extragerea configurației implicite Nginx

Copiem fișierul din container în directorul curent pentru a-l modifica.

docker cp web:/etc/nginx/conf.d/default.conf ./default.conf

Ieșire în terminal

Successfully copied 2.56kB to /home/dexter/proiect/default.conf

Exemplul 2: Copierea unui fișier în container

Punem o pagină nouă în directorul servit de Nginx.

docker cp ./index.html web:/usr/share/nginx/html/index.html

Ieșire în terminal

Successfully copied 2.05kB to web:/usr/share/nginx/html/index.html

Greșeli frecvente

  • Copierea fișierelor într-un container ca soluție permanentă: la recrearea containerului modificările dispar. Pune fișierele în imagine (Dockerfile) sau într-un volum.
  • Folosirea ID-ului imaginii în loc de numele/ID-ul containerului: docker cp lucrează doar cu containere.

Comenzi înrudite

  • docker exec: Rulează o comandă suplimentară într-un container care rulează deja.
  • docker run -v / --mount: Atașează volume, directoare de pe gazdă (bind mounts) sau memorie RAM (tmpfs) la un container.
  • docker volume: Creează, listează, inspectează și șterge volume gestionate de Docker pentru date persistente.