906 Stimmen

Wie man ein Host-Verzeichnis in einem Docker-Container einbindet

Ich versuche, ein Host-Verzeichnis in einen Docker-Container zu mounten, damit alle Updates auf dem Host in den Docker-Containern reflektiert werden.

Wo mache ich einen Fehler. Hier ist, was ich gemacht habe:

kishore$ cat Dockerfile

FROM ubuntu:trusty
RUN apt-get update
RUN apt-get -y install git curl vim
CMD ["/bin/bash"]
WORKDIR /test_container
VOLUME ["/test_container"]

kishore$ tree
.
 Dockerfile
 main_folder
     tfile1.txt
     tfile2.txt
     tfile3.txt
     tfile4.txt

kishore$ docker build --tag=k3_s3:latest .

Uploading context 7.168 kB
Uploading context
Step 0 : FROM ubuntu:trusty
 ---> 99ec81b80c55
Step 1 : RUN apt-get update
 ---> Using cache
 ---> 1c7282005040
Step 2 : RUN apt-get -y install git curl vim
 ---> Using cache
 ---> aed48634e300
Step 3 : CMD ["/bin/bash"]
 ---> Running in d081b576878d
 ---> 65db8df48595
Step 4 : WORKDIR /test_container
 ---> Running in 5b8d2ccd719d
 ---> 250369b30e1f
Step 5 : VOLUME ["/test_container"]
 ---> Running in 72ca332d9809
 ---> 163deb2b1bc5
Successfully built 163deb2b1bc5
Removing intermediate container b8bfcb071441
Removing intermediate container d081b576878d
Removing intermediate container 5b8d2ccd719d
Removing intermediate container 72ca332d9809

kishore$ docker run -i -t k3_s3:latest /bin/bash

root@0f17e2313a46:/test_container# ls -al
total 8
drwx------  2 root root 4096 Apr 29 05:15 .
drwxr-xr-x 66 root root 4096 Apr 29 05:15 ..

kishore$ docker -v
Docker version 0.9.1, build 867b2a9
  • Ich weiß nicht, wie man die boot2docker-Version überprüft

Fragen, Probleme:

  1. Wie muss ich das main_folder mit dem im Docker-Container vorhandenen test_container-Ordner verknüpfen?
  2. Ich möchte das automatisieren. Wie kann ich das machen, ohne wirklich den run -d -v-Befehl zu verwenden?
  3. Was passiert, wenn boot2docker abstürzt? Wo sind die Docker-Dateien gespeichert (abgesehen vom Dockerfile)?

6voto

Adam Smith Punkte 659

Um dies unter Windows 10 zum Laufen zu bringen, musste ich das Docker-Einstellungsfenster aus dem Infobereich öffnen und zum Abschnitt Freigegebene Laufwerke gehen.

Dann habe ich das Kästchen neben C aktiviert. Docker hat nach meinen Desktop-Anmeldeinformationen gefragt, um die Berechtigung zum Schreiben in meinen Benutzerordner zu erhalten.

Dann habe ich den Docker-Container entsprechend den obigen Beispielen und auch dem Beispiel auf dieser Seite mit den Einstellungen ausgeführt, wobei ich an /data im Container angeschlossen habe.

docker run -v c:/Users//Desktop/dockerStorage:/data -weitere -optionen

5voto

mattes Punkte 8278

boot2docker zusammen mit VirtualBox Guest Additions
Wie man /Users in boot2docker einbindet

https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c

tl;dr Erstellen Sie Ihre eigene benutzerdefinierte boot2docker.iso mit VirtualBox Guest Additions (siehe link) oder laden Sie http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso herunter und speichern Sie es unter ~/.boot2docker/boot2docker.iso.

5voto

Chankey Pathak Punkte 20094

Beachten Sie, dass Sie in Windows den absoluten Pfad angeben müssen.

Das Folgende hat bei mir funktioniert.

docker run -t -i -v D:/projects/:/home/chankeypathak/work -p 8888:8888 jupyter/tensorflow-notebook /bin/bash

3voto

Dimitri de Jesus Punkte 1441

Quoting from the Offiziellen Website:

  1. Stellen Sie sicher, dass keine vorherigen getting-started Container ausgeführt werden.

  2. Führen Sie den folgenden Befehl aus dem App-Verzeichnis aus.

  • x86-64 Mac oder Linux-Gerät:

    docker run -dp 3000:3000 \
      -w /app -v "$(pwd):/app" \
      node:12-alpine \
      sh -c "yarn install && yarn run dev"
  • Windows (PowerShell):

    docker run -dp 3000:3000 \
      -w /app -v "$(pwd):/app" \
      node:12-alpine \
      sh -c "yarn install && yarn run dev"
  • Aple Silicon Mac oder ein anderes ARM64-Gerät:

    docker run -dp 3000:3000 \\
      -w /app -v "$(pwd):/app" \\
      node:12-alpine \\
      sh -c "apk add --no-cache python2 g++ make && yarn install && yarn run dev"

Erklärung:

  • dp 3000:3000 - wie zuvor. Im abgetrennten (Hintergrund-) Modus ausführen und eine Portzuordnung erstellen
  • w /app - setzt das "Arbeitsverzeichnis" bzw. das aktuelle Verzeichnis, von dem aus der Befehl ausgeführt wird
  • v "$(pwd):/app" - bindet das aktuelle Verzeichnis vom Host in das /app-Verzeichnis im Container ein
  • node:12-alpine - das zu verwendende Abbild.

Beachten Sie, dass dies das Basisbild für unsere App aus der Dockerfile sh -c "yarn install && yarn run dev" - der Befehl.

Wir starten eine Shell mit sh (Alpine hat kein Bash) und führen yarn install aus, um alle Abhängigkeiten zu installieren, und führen dann Yarn run dev aus. Wenn wir in der package.json nachsehen, sehen wir, dass das Dev-Skript nodemon startet.

3voto

Michael Fayad Punkte 1069

Sie können dies auch mit der Portainer Webanwendung für ein anderes visuelles Erlebnis tun.

Ziehen Sie zuerst das Portainer-Image:

docker pull portainer/portainer

Erstellen Sie dann ein Volume für Portainer:

docker volume create portainer_data

Erstellen Sie auch einen Portainer-Container:

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Sie können die Web-App mit Ihrem Browser unter folgender URL aufrufen: "http://localhost:9000". Bei der ersten Anmeldung werden Sie aufgefordert, Ihre Portainer-Administratoranmeldeinformationen festzulegen.

Folgen Sie in der Web-App diesen Menüs und Schaltflächen: (Container > Container hinzufügen > Einstellungen ausfüllen > Container bereitstellen)

Ich hatte Schwierigkeiten, ein "mount"-Volume mit Portainer zu erstellen, und ich habe festgestellt, dass ich beim Erstellen des Volumes meines Containers auf "bind" klicken musste. Unten finden Sie eine Abbildung der Volumenbindungs-Einstellungen, die für die Erstellung meines Containers mit einem gebundenen, auf den Host montierten Volume funktioniert haben.

Volumenbindungs-Einstellungen

P.S.: Ich verwende Docker 19.035 und Portainer 1.23.1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X