Hoe bestanden over te zetten van en naar een Docker-container

Gebruik het Docker- docker cpcommando om bestanden of mappen te kopiëren tussen uw lokale machine en een container. Het werkt in beide richtingen, kopieert mappen recursief en kan een actieve of gestopte container targeten. U hoeft geen shell in de container te openen of een tar-archief aan te maken voor een gewone kopie.

De basissyntaxis is docker cp SOURCE DESTINATION. Plaats de containernaam of -ID vóór een dubbele punt voor een containerpad: docker cp LOCAL_PATH CONTAINER:CONTAINER_PATHkopieert naar een container, terwijl docker cp CONTAINER:CONTAINER_PATH LOCAL_PATHkopieert naar buiten. De Docker -documentatie over `docker cp` beschrijft de pad- en directoryregels.

1. Zoek de naam of ID van de container.

Voer dit uit vanuit een terminal waarin Docker-opdrachten de Docker Engine kunnen bereiken:

docker ps -a

docker psGeeft een lijst van actieve containers; door 'stopped' toe te voegen, -aworden ook gestopte containers weergegeven. Gebruik de waarde in de NAMESkolom of een container-ID in de onderstaande commando's. Een naam zoals webis gemakkelijk te hergebruiken; een ID is een exacte identificatie wanneer u containers wilt onderscheiden. U kunt de weergegeven velden controleren met `docker ps` / `docker container ls` .

Terminaluitvoer van docker ps -a toont een actieve container met de naam web en de bijbehorende korte container-ID.
Gebruik de containernaam of ID die wordt weergegeven door docker ps -a.

2. Kopieer een bestand van uw computer naar de container.

Voer dit commando uit docker cpop de machine waarvan u de bestanden wilt kopiëren. Kopieer bijvoorbeeld vanuit een projectmap met de volgende inhoud report.csvhet bestand naar /tmpde map in de container met de naam web:

docker cp ./report.csv web:/tmp/report.csv

Vervang dit ./report.csvdoor het lokale bestandspad, webde naam of ID van uw container en /tmp/report.csvhet bestemmingspad binnen de container. Containerpaden worden geïnterpreteerd vanuit de hoofdmap van de container, dus de schuine streep aan het begin is optioneel. Als de bestemming een bestaande map is, plaatst Docker het bestand daarin met behulp van de bronbestandsnaam.

Terminalopdracht die het lokale report.csv-bestand kopieert naar de webcontainer op /tmp/report.csv.
Met dit commando wordt één hostbestand naar de container gekopieerd.

Docker kopieert mappen recursief. Als een map /etc/app/al bestaat, plaatst dit commando configde volgende inhoud erin:

docker cp ./config web:/etc/app/

Om alleen de inhoud van confignaar te kopiëren /etc/app/, voeg je /.aan het einde van het bronpad toe:

Terminalopdracht die de inhoud van de lokale configuratiemap kopieert naar /etc/app in de webcontainer.
De /.extensie betekent dat de inhoud van de map wordt gekopieerd, in plaats van dat de bronmap wordt genest.
docker cp ./config/. web:/etc/app/

Docker maakt geen ontbrekende bovenliggende mappen aan. Maak eerst de bovenliggende map van de bestemming aan. Om een ​​ontbrekende map in een draaiende container aan te maken, voert u het commando uit docker exec web mkdir -p /etc/appen kopieert u vervolgens de bestanden. docker execHet commando vereist een draaiende container; het commando docker cpzelf niet.

3. Kopieer een bestand vanuit de container naar uw computer.

Keer de volgorde van bron en bestemming om om een ​​bestand op te halen. Maak eerst de lokale bestemmingsmap aan en kopieer vervolgens een logbestand uit de container:

mkdir -p ./backup
docker cp web:/var/log/app.log ./backup/
Terminalopdracht om het app.log-bestand uit /var/log in de webcontainer op te halen en naar een lokale back-upmap te kopiëren.
De lokale bestemmingsmap moet al bestaan ​​voordat u erin kopieert.

Je kunt een map op dezelfde manier ophalen. Voeg het volgende toe /.aan het bronpad van de container om de inhoud ervan rechtstreeks naar een bestaande lokale map te kopiëren:

docker cp web:/var/log/app/. ./backup/

Docker kan bestanden kopiëren vanuit een gestopte container, wat handig is voor het verzamelen van logbestanden of configuratiegegevens nadat een proces is beëindigd.

Docker Compose gebruiken

Als je project Compose gebruikt, gebruik dan de servicenaam in docker compose cpplaats van een container-ID op te zoeken. Kopieer bijvoorbeeld een lokaal bestand naar een service met de naam web:

docker compose cp ./report.csv web:/tmp/report.csv

Om in de andere richting te kopiëren, draai je de paden om:

docker compose cp web:/var/log/app.log ./backup/

Raadpleeg de officiële docker compose cp-referentie voor opties zoals het selecteren van een replica wanneer een service meerdere containers heeft.

Machtigingen en permanente opslag

Standaard zijn bestanden die naar een container worden gekopieerd eigendom van de root-gebruiker en de primaire groep van die container; bestanden die naar uw computer worden gekopieerd, zijn eigendom van de gebruiker die Docker uitvoert. Waar mogelijk worden machtigingen behouden. Gebruik deze optie -aom de bron-UID en GID te behouden. Als een app een bestand niet kan lezen, controleer dan de bestemming en het eigendom in plaats van de container privileged te maken.

Bestanden in de beschrijfbare laag van een container worden verwijderd wanneer de container wordt verwijderd. Voor gegevens die moeten blijven bestaan, gebruikt u een Docker-volume of een bind-mount. Volumes zijn geschikt voor persistente containergegevens; bind-mounts zorgen ervoor dat de host en de container toegang hebben tot dezelfde bestanden. Als u naar een pad kopieert dat door een mount wordt gedekt, wijzigt u de gemounte gegevens. Controleer daarom eerst de bestemming. Raadpleeg de Docker-richtlijnen voor volumes en bind-mounts .

Snelle probleemoplossing

  • "Container bestaat niet": voer het commando uit docker ps -aen controleer de naam of ID van de container.
  • “Bestand of map bestaat niet”: controleer het bronpad en zorg ervoor dat de bovenliggende map van de bestemming bestaat. Containerpaden beginnen bij /.
  • De map is een niveau dieper terechtgekomen dan verwacht: gebruik de achtervoeging /.om alleen de inhoud van de map te kopiëren.
  • Toegang geweigerd: controleer of uw account Docker mag gebruiken en of de applicatiegebruiker lees- of schrijfrechten heeft voor de bestemming. Gebruik dit op Linux sudoalleen als het Docker-toegangsbeleid van uw systeem dit vereist.
  • Bestanden verdwijnen na het opruimen: bewaar belangrijke gegevens in een volume of bind mount, niet alleen in de beschrijfbare laag van de container.

Laat een reactie achter

Hoe u verloren partities en harde schijfgegevens veilig kunt herstellen

Hoe u verloren partities en harde schijfgegevens veilig kunt herstellen

Leer hoe u verloren partities en bestanden kunt herstellen met TestDisk en PhotoRec. Bescherm de bronschijf, scan veilig en sla de herstelde gegevens op een andere schijf op.

Hoe scan je QR-codes op een Linux-desktop?

Hoe scan je QR-codes op een Linux-desktop?

Scan QR-codes op Linux met CoBang met behulp van een webcam of afbeeldingsbestand. Bekijk de installatieopties, configuratiestappen en oplossingen voor toegang tot de Flatpak-camera.

Hoe je webcaminstellingen op Linux kunt wijzigen met Cameractrls

Hoe je webcaminstellingen op Linux kunt wijzigen met Cameractrls

Wijzig de webcaminstellingen op Linux met Cameractrls: pas de belichting, kleur, flikkerreductie en andere ondersteunde instellingen aan en controleer vervolgens de compatibele videomodi.

Hoe installeer je PhpStorm op Linux: Toolbox, Tar.gz, Snap en AUR?

Hoe installeer je PhpStorm op Linux: Toolbox, Tar.gz, Snap en AUR?

Installeer PhpStorm op Linux met JetBrains Toolbox of het zelfstandige tar.gz-archief, plus de Snap- en Arch AUR-opties. Java is al meegeleverd.

Hoe stel je twee schermen in op XFCE 4?

Hoe stel je twee schermen in op XFCE 4?

Maak voor elk scherm een ​​apart XFCE 4-paneel aan, wijs het tweede paneel toe aan de juiste uitvoer, positioneer en schaal het en voeg de benodigde launchers en statusitems toe.

Hoe installeer je Cisco Packet Tracer op Linux?

Hoe installeer je Cisco Packet Tracer op Linux?

Download Cisco Packet Tracer 9.0.1 voor Ubuntu 64-bit, installeer het DEB-pakket met APT, accepteer de licentie in de terminal en meld u aan om een ​​lab te starten.

Hoe maak je een back-up van een cd-rom als ISO-bestand op Linux?

Hoe maak je een back-up van een cd-rom als ISO-bestand op Linux?

Maak een cd-rom-ISO op Linux met GNOME Disks of dd. Identificeer het optische station, controleer het kopieerproces, verifieer de image en weet wanneer een beschadigde of audio-cd een ander programma nodig heeft.

Hoe je een afbeelding uitknipt in Linux met GIMP

Hoe je een afbeelding uitknipt in Linux met GIMP

Verwijder de achtergrond van een foto op Linux met GIMP: selecteer een onderwerp, verwijder de geselecteerde achtergrond, behoud de transparantie en exporteer een herbruikbare PNG-afbeelding.

Download FlightGear gratis: officiële installatiehandleiding

Download FlightGear gratis: officiële installatiehandleiding

Download FlightGear gratis van de officiële website. Vergelijk de Windows-, macOS- en Linux-pakketten, installeer de gegevensbestanden en begin aan je eerste vlucht.

Google Tasks desktop-app: hoe gebruik je deze op een computer?

Google Tasks desktop-app: hoe gebruik je deze op een computer?

Open Google Taken in een browser, voeg een Chrome-snelkoppeling of een app-achtige start toe en beheer taken met een datum via Agenda en Gmail.