docker cp
Wenn Dateien von einem Host in einen Docker-Container kopiert werden sollten (oder umgekehrt: Container -> Host), nutz man dazu den Befehl:
docker cp [Quellpfad/Quelldatei] [Container:Zielpfad/Zieldatei]
Wenn das allerdings einmal nicht funktioniert und mit einer ähnlich lautenden Fehlermeldung quittiert wird:
docker cp /home/administrator/myFile1.php myContainer1:/resources/views/files/myFile1.php Error: No such container:path: myContainer1:/resources/views/files
Kann das mit einer gesetzten „WORKDIR“-Umgebungsvariable zusammenhängen.
In diesem Fall wurde in der Dockerfile folgendes definiert:
WORKDIR /var/www/html
Somit muss der korrekte Kopier-Befehl folgendermaßen lauten:
docker cp /home/administrator/myFile1.php myContainer1:/var/www/resources/views/files/myFile1.php
docker exec
Das wird aber oftmals vergessen, wenn ansonsten mit „docker exec“ gearbeitet wird.
Hier wird die WORKDIR-Umgebungsvariable nämlich automatisch berücksichtigt. Es reicht beispielsweise folgender Befehl:
docker exec -it myContainer1 sh cd /resources/views/files
Anstatt den ganzen Pfad ausschreiben zu müssen:
docker exec -it myContainer1 shcd /var/www/resources/views/files
Verifiziert kann der aktuelle Standort in der Verzeichnisstruktur mit dem pwd-Befehl werden:
docker exec -it myContainer1 sh pwd /var/www/html
Die Ausagbe „/var/www/html“ korresponidert dabei mit der WORKDIR-Umgebungsvariable in der Dockerfile.
Dieses Verhalten zeigt sich mindestens bis zur Docker-Version 19.03.13 (aktuelle Version als der Artikel geschrieben wurde).
System- und Netzwerkadministrator
Informationstechnik – Netzwerktechnik – Consulting
MCSA+M | MCSE | MTCNA
Marc – danke schön!
I was searching for this bit of information for hours and your solution was fantastic!