37 Frage: Kopieren von Dateien vom Host in den Docker-Container

Frage erstellt am Mon, Oct 22, 2018 12:00 AM

Ich versuche, eine Sicherungs- und Wiederherstellungslösung für die Docker-Container zu erstellen, mit denen wir arbeiten.

Ich habe ein Docker-Basisimage (ubuntu:base), das ich erstellt habe, und möchte es nicht jedes Mal mit einer Docker-Datei neu erstellen müssen, um Dateien hinzuzufügen.

Ich möchte ein Skript erstellen, das auf dem Hostcomputer ausgeführt wird, einen neuen Container mithilfe des ubuntu:base Docker-Images erstellt und anschließend Dateien in diesen Container kopiert.

Wie kann ich Dateien vom Host in den Container kopieren?

    
1240
  1. Wenn Sie nicht neu erstellen möchten, warum nicht " Docker-Commit "? So wird Ihr Bild gespeichert.
    28.04.2014 22: 24: 07Z
  2. Nur eine Bemerkung zu einem Begriff, den noch niemand angesprochen hat: Behandeln Sie Container im Allgemeinen als "kurzlebig". Es gibt Use Cases zum Kopieren von Dateien in /aus einem laufenden Container (Testen, Prototyping). Wenn Sie sich jedoch in einer Position befinden, in der Sie mit Dockerfiles und /oder Kompositionen nicht das wieder herstellen können, was Sie benötigen, befinden Sie sich möglicherweise an einem schlechten Ort. Sie möchten Container im Allgemeinen nicht so sichern, als wären es Betriebssystem- oder gar VM-Objekte. Im Allgemeinen: -)
    2017-10-16 18: 04: 56Z
  3. 2018-11-30 05: 49: 21Z
30 Antworten                              30                         

Mit dem Befehl cp können Dateien kopiert werden. Eine bestimmte Datei kann wie folgt kopiert werden:

 
docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt

mycontainer ist zur Hervorhebung eine Container -ID, keine Image -ID.

Mehrere im Ordner src enthaltene Dateien können mit den folgenden Schritten in den Ordner target kopiert werden:

 
docker cp src/. mycontainer:/target
docker cp mycontainer:/src/. target

Referenz: Docker CLI-Dokumente für cp

In Docker-Versionen vor 1.8 konnten nur Dateien von einem Container auf den Host kopiert werden. Nicht vom Host in einen Container.

    
2103
13.09.2018 03: 42: 28Z
  1. Beachten Sie auch, dass dies auf dem Host-VM oder dem Hauptbetriebssystem möglich ist und entweder von Host zu Container oder von VM zu Host (oder vom Hauptbetriebssystem) funktioniert.
    16.11.2015 06: 06: 36Z
  2. In einer Docker-Datei können Sie mit dem Schlüsselwort ADD während der Erstellungszeit Dateien hinzufügen.
    2016-06-30 17: 49: 22Z
  3. @ h3nrik COPY vor ADD .
    2016-08-02 17: 06: 19Z
  4. Verwenden von docker cp zum Kopieren vom Container zum Host funktioniert gut, aber wenn es zum Kopieren von Dateien vom Host zum Container verwendet wird, hat dies keine Auswirkungen. Weiß jemand, warum? Docker-Version: Docker-Version 1.10.3, Build cb079f6-nicht unterstützt
    2016-11-29 05: 28: 23Z
  5. Kann ich mit docker cp mehrere Dateien vom Host in den Container kopieren?
    2016-12-01 21: 57: 11Z
  1. EnthaltenName oder kurze Container-ID:

     
    $ docker ps
    
  2. Vollständige Container-ID abrufen:

     
    $ docker inspect -f   '{{.Id}}'  SHORT_CONTAINER_ID-or-CONTAINER_NAME
    
  3. Datei kopieren:

     
    $ sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
    

BEISPIEL:

 
$ docker ps

CONTAINER ID      IMAGE    COMMAND       CREATED      STATUS       PORTS        NAMES

d8e703d7e303   solidleon/ssh:latest      /usr/sbin/sshd -D                      cranky_pare

$ docker inspect -f   '{{.Id}}' cranky_pare

oder

 
$ docker inspect -f   '{{.Id}}' d8e703d7e303

d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5

$ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5**/root/file.txt
    
159
2017-03-11 10: 29: 07Z
  1. Für mich enthielt der Bereitstellungspfad des Hosts keine aufs, sondern eine devicemapper. Der einfachste Weg, den Container-Bereitstellungspfad zu überprüfen (während er ausgeführt wird), besteht darin, den Befehl mount auszuführen.
    2014-10-03 07: 54: 44Z
  2. Ich habe die obige Lösung ausprobiert. Es kopierte die Dateien in das Docker-spezifische Verzeichnis. Wenn ich jedoch bash für den Docker-Container verwende, werden die Dateien dort nicht angezeigt. Fehlt mir etwas?
    2014-12-30 12: 30: 25Z
  3. Der neue Pfad lautet /var /lib /docker /devicemapper /mnt /< < id > > /rootfs /
    14.01.2015 10: 28: 02Z
  4. Unter Docker 1.4.1 (aktuellste Version) sind es /var/lib/docker/aufs/diff/<id>/
    22.01.2015 08: 24: 03Z
  5. Was ist mit für arme MacOS-Benutzer? Das Mount-Verzeichnis ist in /var/lib für mich. find / -name docker war auch nicht hilfreich.
    2016-12-01 18: 47: 46Z

Am saubersten ist es, beim Starten des Containers ein Hostverzeichnis im Container bereitzustellen:

 
{host} docker run -v /path/to/hostdir:/mnt --name my_container my_image
{host} docker exec -it my_container bash
{container} cp /mnt/sourcefile /path/to/destfile
    
125
05.09.2018 09: 20: 25Z
  1. Wie können Sie Container ausführen? Ich dachte, Sie können das nur mit einem Bild machen.
    2015-02-17 14: 46: 01Z
  2. Dies funktioniert bei mir nicht (zumindest nicht mit einem Container)
    2015-03-09 19: 43: 35Z
  3. Das hat bei mir nur funktioniert, wenn ich das Volume neben dem Ausführen des Images angefügt habe (wodurch der Container instanziiert wurde). Beendet mit: docker run -d -p -v /host/path:/mnt --name container_name image_name
    2015-06-13 07: 02: 56Z
  4. Das funktioniert bei mir nicht. Mindestens ein Container kann nicht ausgeführt werden. Kann nur Bild
    ausführen
    16.06.2015 06: 34: 21Z
  5. Ich bin erstaunt, dass docker cp eine Einwegoperation ist!
    2015-08-27 17: 40: 36Z

Das Folgende ist eine ziemlich hässliche Methode, aber es funktioniert.

 
docker run -i ubuntu /bin/bash -c 'cat > file' < file
    
109
2014-06-11 16: 22: 18Z
  1. Das funktioniert großartig! Vergessen Sie aber nicht, die Änderung zu übernehmen: docker commit `docker ps -l -q` ubuntu-with-file. Andernfalls geht die Änderung verloren (verwenden Sie einen beliebigen Namen anstelle von ubuntu-with-file).
    2014-09-26 23: 32: 44Z
  2. @ Erik: Wo befindet sich die Datei, wenn der Container läuft?
    2014-11-09 12: 08: 46Z
  3. Außerdem können wir die neue docker exec-Funktion verwenden, um mit dem folgenden Container zu arbeiten: docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/
    2014-11-13 16: 23: 19Z
  4. @ Mikl Ich denke, es sollte docker exec -i ... statt -it sein, da es kein TTY gibt, wenn aus einer Datei ein Piping durchgeführt wird.
    2015-05-24 09: 36: 26Z
  5. Wenn Sie immer noch mit einer alten Docker-Version (wie ich) arbeiten und ein ganzes Verzeichnis kopieren möchten, können Sie dies tun: tar -c -v -f - /path/to/host/directory | docker exec -i <container-name> bash -c 'tar -x -v --strip-components 1 -f - -C /path/to/container/directory'
    2016-02-01 22: 24: 54Z

Wenn Sie dies für einen laufenden Container tun müssen, können Sie docker exec (hinzugefügt in 1.3) verwenden.

Suchen Sie zuerst den Namen oder die ID des Containers:

 
$ docker ps
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS                   NAMES
b9b7400ddd8f        ubuntu:latest                "/bin/bash"         2 seconds ago       Up 2 seconds                                elated_hodgkin

Im obigen Beispiel können wir entweder b9b7400ddd8f oder elated_hodgkin verwenden.

Wenn Sie alles in /tmp/somefiles auf dem Host in /var/www im Container kopieren möchten:

 
$ cd /tmp/somefiles
$ tar -cv * | docker exec -i elated_hodgkin tar x -C /var/www

Anschließend können wir /bin/bash im Container ausführen und überprüfen, ob es funktioniert hat:

 
$ docker exec -it elated_hodgkin /bin/bash
root@b9b7400ddd8f:/# ls /var/www
file1  file2
    
39
2015-01-24 07: 38: 07Z
  1. Das hat bei mir funktioniert, danke!
    29.07.2015 11: 30: 22Z
  2. Funktioniert hervorragend auf Docker 1.16 unter Centos 7.4. Großartige innovative Idee.
    2018-04-02 14: 37: 13Z

Die Lösung ist unten angegeben,

In der Docker-Shell

 
root@123abc:/root#  <-- get the container ID

Vom Host

 
cp thefile.txt /var/lib/docker/devicemapper/mnt/123abc<bunch-o-hex>/rootfs/root

Die Datei wird direkt an den Ort kopiert, an dem sich der Container im Dateisystem befindet.

    
34
2017-09-18 12: 52: 43Z
  1. Großartige Antwort. In neueren Docker-Versionen wurde der Pfad in /var /lib /docker /aufs /mnt /
    umbenannt
    2014-12-19 00: 01: 55Z
  2. Der Devicemapper-Pfad scheint auf Fedora mit Docker 1.6 nicht zu funktionieren. Habe es als separaten Q stackoverflow angelegt .de /questions /29939419 /… , alle Kommentare sind willkommen.
    29.04.2015 11: 53: 16Z

Sehr einfach

  1. Erstellen Sie eine neue Docking-Datei und verwenden Sie das vorhandene Image als Basis.

     
    FROM myName/myImage:latest
    
    ADD myFile.py bin/myFile.py
    
  2. Erstellen Sie dann den Container:

     
    docker build .
    
30
2017-05-26 08: 31: 39Z
  1. Das hat bei mir funktioniert. Nichts anderes. Vielen Dank!
    2017-01-02 02: 20: 54Z
  2. Kurze und einfache Erklärung, danke!
    2017-05-26 08: 30: 36Z
  3. Es wird ein neues Bild erstellt, nicht direkt ein neuer Container. Wenn Sie dieses Bild wiederverwenden, während myFile.py geändert wurde, wird die ältere Version der Datei verwendet, sofern Sie das Bild nicht neu erstellen.
    2018-12-15 11: 11: 02Z

Eine andere Lösung zum Kopieren von Dateien in einen laufenden Container ist die Verwendung von tar:

 
tar -c foo.sh | docker exec -i theDockerContainer /bin/tar -C /tmp -x

Kopiert die Datei foo.sh in /tmp des Containers.

Bearbeiten: Entfernen Sie Reduntant -f dank Maarten .

    
28
2017-05-23 12: 10: 54Z
  1. Dies ist gut, wenn Sie ein ganzes Verzeichnis senden müssen. Für eine einzelne Datei ist Eriks Antwort einfacher.
    2015-08-05 21: 27: 46Z
  2. @ Kelvin: tar behält aber auch Dateiattribute und -namen bei. Dies bedeutet unter anderem, dass Sie den Namen nur einmal eingeben müssen (und dort die Tab-Vervollständigung von Ihrer Shell erhalten). Also würde ich sagen, dass Teer eigentlich einfacher ist, solange er im Container installiert ist.
    2015-08-06 13: 17: 43Z
  3. Die -f - ist zwar etwas redundant, das Standardverhalten ist jedoch, auf jeden Fall nach stdout zu schreiben.
    2015-08-06 13: 21: 13Z
  4. Dies bedeutet, dass eine Hostabhängigkeit von tar
    besteht
    2016-02-25 03: 59: 16Z
  5. Sie haben Recht - Sie müssen tar auf dem Host und im Container installieren. Heutzutage ist die Verwendung von Docker CP die bessere Lösung.
    2016-02-25 07: 55: 41Z

So kopieren Sie eine Datei vom Host in den aktiven Container

 
docker exec -i $CONTAINER /bin/bash -c "cat > $CONTAINER_PATH" < $HOST_PATH

Basierend auf Eriks Antwort und den Kommentaren von Mikl und z0r.

    
20
2017-05-23 11: 55: 19Z

Mit Docker 1.8 kann docker cp Dateien vom Host in den Container kopieren. Lesen Sie den Docker-Blog-Beitrag Ankündigung von Docker 1.8: Content Trust, Toolbox und Updates für Registrierung und Orchestrierung .

    
12
2017-03-11 10: 35: 49Z
  1. Hier ist ein Beispiel docker cp foo.txt mycontainer:/foo.txt
    2015-10-07 16: 16: 03Z

Dies ist eine direkte Antwort auf die Frage "Kopieren von Dateien vom Host in den Docker-Container", die in dieser Frage im Titel gestellt wurde.

Versuchen Sie es mit docker cp. Dies ist der einfachste Weg und funktioniert sogar auf meinem Mac. Verwendung:

 
docker cp /root/some-file.txt some-docker-container:/root

Dadurch wird die Datei some-file.txt aus dem Verzeichnis /root auf Ihrem Host-Computer in den Docker-Container some-docker-container in das Verzeichnis /root kopiert. Dies kommt der sicheren Kopiersyntax sehr nahe. Und wie im vorherigen Beitrag gezeigt, können Sie es auch umgekehrt verwenden. Sie kopieren also auch Dateien aus dem Container auf den Host.

Und bevor Sie diesen Beitrag downlinken, geben Sie bitte docker cp --help ein. Das Lesen der Dokumentation kann sehr hilfreich sein, manchmal ...

Wenn Ihnen dies nicht gefällt und Sie Datenvolumen in Ihrem bereits erstellten und ausgeführten Container möchten, ist die Neuerstellung heute Ihre einzige Option. Siehe auch Wie kann ich eine hinzufügen? Volume in einen vorhandenen Docker-Container? .

    
12
2017-05-23 12: 10: 54Z
  1. Gut ... es funktioniert ... Danke ...
    2017-12-01 04: 28: 05Z

Ich habe die meisten (aktualisierten) Lösungen hier ausprobiert, aber im Docker 17.09 (2018) gibt es keinen /var /lib /docker /aufs-Ordner mehr.

Diese einfache docker cp hat diese Aufgabe gelöst.

 
docker cp c:\path\to\local\file container_name:/path/to/target/dir/

Wie bekomme ich container_name?

 
 docker ps 

Es gibt einen Abschnitt NAMES. Verwenden Sie keine IMAGE.

    
10
2018-11-12 19: 49: 13Z
  1. Danke! Es ist eine einfache Lösung und funktioniert
    2018-11-12 14: 30: 54Z

Um Dateien /Ordner zwischen einem Container und dem lokalen Dateisystem zu kopieren, geben Sie den folgenden Befehl ein:

 
docker cp {SOURCE_FILE} {DESTINATION_CONTAINER_ID}:/{DESTINATION_PATH}

Zum Beispiel

 
docker cp /home/foo container-id:/home/dir

Geben Sie den folgenden Befehl ein, um die Contianer-ID abzurufen:

 
docker ps

Der oben genannte Inhalt stammt aus docker.com .

    
9
2017-09-19 15: 29: 36Z

Normalerweise gibt es drei Arten:

  1. Vom Container zum Host

     
    docker cp container_id:./bar/foo.txt .
    

 dev1

  1. Vom Host zu einem Container

     
    docker exec -i container_id sh -c 'cat > ./bar/foo.txt' < ./foo.txt
    

 dev2

  1. Von Container zu Container mischt sich 1 und 2

     
    docker cp container_id1:./bar/foo.txt .
    
    docker exec -i container_id2 sh -c 'cat > ./bar/foo.txt' < ./foo.txt
    

 dev3

    
9
2019-03-03 16: 16: 59Z
  1. docker cp funktioniert in beide Richtungen. Es ist nicht erforderlich, Exec, Cat und Redirect auszuführen. docker cp host_file.txt container: /path /
    2019-03-27 19: 15: 01Z

Angenommen, der Container wird bereits ausgeführt, geben Sie den folgenden Befehl ein:

 
# cat /path/to/host/file/ | docker exec -i -t <container_id> bash -c "/bin/cat > /path/to/container/file"

Um Dateien über ein freigegebenes Verzeichnis freizugeben, führen Sie den Container aus, indem Sie den folgenden Befehl eingeben:

 
# docker run -v /path/to/host/dir:/path/to/container/dir ...

Hinweis: Probleme mit Berechtigungen können auftreten, wenn die Benutzer des Containers nicht mit den Benutzern des Hosts identisch sind.

    
7
2017-09-19 14: 46: 26Z
  1. Zusätzlich: docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/
    2014-11-13 16: 22: 10Z
  2. Beachten Sie, dass cat nach dem Beenden nicht beendet wird. Wenn es Ihnen wichtig ist (wenn Sie Bash-Skripte kopieren, wird Bash die Ausführung verweigern), sollten Sie lsof | grep yourfilename ausführen und den cat-Prozess beenden, der die Datei enthält.
    2014-11-14 07: 36: 23Z
  3. Danke! Toller Tipp. Können Sie mir bitte sagen, wie ich diesen Prozess mit einem Befehl beenden kann? So etwas wie kill $(lsof | grep /path/to/file | sed ...). Ich werde für Ihre Hilfe dankbar sein
    2014-11-14 13: 41: 06Z
  4. kill $(docker top CONTAINERNAME | sed -n '/cat$/p' | sed 's/^root[^0-9]\+\([0-9]\+\).*$/\1/')
    2014-11-14 19: 30: 51Z

In einer Docker-Umgebung befinden sich alle Container im Verzeichnis:

/var/lib/docker/aufs/required-docker-id/

Um das Quellverzeichnis /die Quelldatei in einen beliebigen Teil des Containers zu kopieren, geben Sie den folgenden Befehl ein:

sudo cp -r mydir/ /var/lib/docker/aufs/mnt/required-docker-id/mnt/

    
6
2017-09-19 14: 30: 55Z

tar und docker cp sind eine gute Kombination zum Kopieren aller Elemente in einem Verzeichnis.

Erstellen Sie einen Datenvolumen-Container.

 
docker create --name dvc --volume /path/on/container cirros

So behalten Sie die Verzeichnishierarchie bei

 
tar -c -C /path/on/local/machine . | docker cp - dvc:/path/on/container

Überprüfen Sie Ihre Arbeit

 
docker run --rm --volumes-from dvc cirros ls -al /path/on/container
    
4
2016-05-09 18: 39: 50Z

Viele, die diese Frage finden, haben möglicherweise tatsächlich das Problem, Dateien in ein Docker-Image zu kopieren, während es erstellt wird (ich habe es getan).

In diesem Fall können Sie den Befehl COPY in der Dockerfile verwenden, mit der Sie das Image erstellen.

Siehe Dokumentation .

    
3
2017-03-11 10: 33: 34Z

Sie können einfach die IP-Adresse Ihres lokalen Computers mit

verfolgen  
ifconfig

Dann geben Sie einfach in Ihren Docker-Container

ein  
scp user_name@ip_address:/path_to_the_file destination

Wenn Sie keinen SSH-Client und -Server installiert haben, installieren Sie ihn einfach mit:

 
sudo apt-get install openssh-server
    
3
2017-03-11 10: 34: 42Z
  1. Vielen Dank, es hat bei mir gut funktioniert. Außerdem fand ich es effizienter als andere Methoden
    2015-08-12 12: 07: 15Z
  2. Dies ist eine schreckliche Sicherheitslösung.
    2018-10-23 23: 22: 45Z

Wenn der Host CentOS oder Fedora ist, gibt es in /var/lib/docker/aufs keinen Proxy, aber unter /proc:

 
cp -r /home/user/mydata/* /proc/$(docker inspect --format "{{.State.Pid}}" <containerid>)/root

Dieser Befehl kopiert den gesamten Inhalt des data-Verzeichnisses in den /-Container mit der ID "containerid".

    
3
2017-03-11 10: 38: 58Z
  1. Dies gilt nicht nur für Redhat: Es funktioniert auch unter Debian. (vielleicht alles Gnu /Linux mit /proc). Erweitern Sie auch den Pfad, um die Datei an einer anderen Stelle abzulegen, nicht nur im Stammverzeichnis.
    2017-02-13 19: 23: 41Z

Falls jemandem wie mir nicht klar ist, was mycontainer in @ h3nrik answer bedeutet, handelt es sich tatsächlich um die Container-ID. Um eine Datei WarpSquare.mp4 in /app/example_scenes/1440p60 von einem verlassenen Docker-Container in den aktuellen Ordner zu kopieren, habe ich dies verwendet.

 
docker cp `docker ps -q -l`:/app/example_scenes/1440p60/WarpSquare.mp4 .

Dabei ruft docker ps -q -l die Container-ID der zuletzt verlassenen Instanz ab. Falls es sich nicht um einen ausgetretenen Container handelt, können Sie ihn über docker container ls oder docker ps

beziehen     
3
08.08.2018 06: 49: 14Z
  1. Sie können IDs von ausgetretenen Containern mit docker ps -a oder docker container ls -a auflisten.
    2018-08-08 09: 22: 38Z

Dies ist der Befehl zum Kopieren von Daten von Docker auf Host:

 
docker cp container_id:file path/filename /hostpath

docker cp a13fb9c9e674:/tmp/dgController.log /tmp/

Unten ist der Befehl zum Kopiereny Daten vom Host zum Docker:

 
docker cp a.txt ccfbeb35116b:/home/
    
3
28.02.2019 12: 23: 21Z

Der beste Weg, um Dateien in den gefundenen Container zu kopieren, ist das Mounten eines Verzeichnisses auf dem Host mithilfe der -v-Option des Docker-Ausführungsbefehls.

    
2
2015-06-22 15: 04: 49Z

Es gibt gute Antworten, aber zu genau. Ich finde heraus, dass docker ps ein guter Weg ist, um die Container-ID zu erhalten, an der Sie interessiert sind. Dann machen Sie

 
mount | grep <id>

um zu sehen, wo das Volume gemountet ist. Das ist

 
/var/lib/docker/devicemapper/mnt/<id>/rootfs/

für mich, aber es kann je nach Betriebssystem und Konfiguration ein anderer Pfad sein. Kopieren Sie nun einfach die Dateien in diesen Pfad.

Die Verwendung von -v ist nicht immer praktisch.

    
2
2017-03-11 10: 31: 47Z

Ich kopiere die Datei einfach direkt von der Stelle, an der sich der Container auf dem Hostcomputer befindet.

Zum Beispiel:

Ermitteln Sie zuerst die Container-ID:

 
root@**3aed62678d54**:/home#

Nehmen wir dann an, die Datei befindet sich auf dem Host im Ausgangsverzeichnis:

 
root@saasdock:/home/dnepangue# cp cheering_nasa.gif /var/lib/docker/aufs/mnt/**3aed62678d54**a5df47a4a00a58bb0312009c2902f8a37498a1427052e8ac454b/home/

Zurück zum Container ...

 
root@**3aed62678d54**:/home# ls cheering_nasa.gif
    
1
2017-03-11 10: 27: 19Z

Wenn Sie Windows als Host verwenden, können Sie mit WinSCP eine Verbindung zu Docker herstellen und Dateien übertragen über die GUI.

Unter Linux funktioniert der Befehl scp auch über das Terminal.

    
1
2017-03-11 10: 43: 53Z

Dies ist ein Onliner zum Kopieren einer einzelnen Datei, während ein Tomcat-Container ausgeführt wird.

 
docker run -v /PATH_TO_WAR/sample.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat

Dadurch wird die War-Datei in das Webapps-Verzeichnis kopiert und Ihre App wird im Handumdrehen ausgeführt.

    
1
2017-10-24 12: 53: 05Z
  1. - v wird bereitgestellt (d. h. ein Link erstellt), nicht kopiert
    2017-12-03 20: 46: 34Z
  2. Der Unterschied im Ergebnis besteht darin, dass beim Mounten der vorherige Containerinhalt ausgeblendet wird, z. Wenn Sie einen Hostordner in einen Containerordner mounten, wird der Inhalt des vorherigen Containerordners nicht mehr angezeigt.
    14.03.2018 06: 22: 05Z

Container-Up-Syntax:

 
 docker run -v /HOST/folder:/Container/floder 

In Docker-Datei

 
COPY hom* /myFolder/        # adds all files starting with "hom"
COPY hom?.txt /myFolder/    # ? is replaced with any single character, e.g., "home.txt"
    
1
2018-07-19 10: 53: 01Z

Wenn in der Docker-Datei kein Verzeichnis als Volume definiert ist, funktioniert ///var /lib /docker /aufs /mnt. Es gibt jedoch Fälle, in denen das Verzeichnis im Container als Volume definiert ist. In diesem Fall sind die Inhalte unter aufs /mnt /* /und die vom Container angezeigten Inhalte unterschiedlich.

Sie müssen den Container mit docker inspect inspizieren und dann nach Volumes suchen. Dort finden Sie eine Erwähnung für etwas wie /var /lib /docker /vfs /dir /fe940b ... (die ID). Sie müssen die Dateien hier anstelle von und hinzufügen /änderner aufs /mnt /*.

Der verwirrende Teil ist, dass die Dateien auch unter /aufs /mnt /* erscheinen. Ich habe mir eine ganze Weile am Kopf gekratzt, warum die Änderungen hier bei mir nicht funktionierten. Hoffe das hilft jemandem.

    
0
28.09.2014 10: 40: 00Z

Meine Lieblingsmethode:

BEHÄLTER:

 
CONTAINER_ID=$(docker ps | grep <string> | awk '{ print $1 }' | xargs docker inspect -f '{{.Id}}')

file.txt

 
mv -f file.txt /var/lib/docker/devicemapper/mnt/$CONTAINER_ID/rootfs/root/file.txt

oder

 
mv -f file.txt /var/lib/docker/aufs/mnt/$CONTAINER_ID/rootfs/root/file.txt
    
0
16.01.2015 02: 59: 07Z
  1. Der Devicemapper-Pfad scheint auf Fedora mit Docker 1.6 nicht zu funktionieren. Habe es als separaten Q stackoverflow angelegt .de /questions /29939419 /… , alle Kommentare sind willkommen.
    29.04.2015 11: 52: 28Z
Quelle platziert Hier