Moby: Hostdatei kann nicht mit relativem Pfad gemountet werden

Erstellt am 7. Juli 2016  ·  3Kommentare  ·  Quelle: moby/moby

INFORMATIONEN ZUM FEHLERBERICHT

Ausgabe von docker version :

Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      linux/amd64

Ausgabe von docker info :

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 21
Server Version: 1.11.1
Storage Driver: overlay
 Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.64 GiB
Name: centos-dev
ID: ACEV:LLBJ:NOYB:VEHF:V3FO:JY3A:5ETY:ETCU:WM3D:DBGZ:YF25:BUTY
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

Schritte zum Reproduzieren des Problems:

  1. docker run --rm -it -v config.json:/etc/config.json centos:7 bash
  2. docker run --rm -it -v ./config.json:/etc/config.json centos:7 bash
  3. docker run --rm -it -v /root/config.json:/etc/config.json centos:7 bash

Beschreiben Sie die Ergebnisse, die Sie erhalten haben:

  1. Ich bekomme einen Ordner „/etc/config.json“ im Container, keine Datei
  2. Docker: Fehlerantwort vom Daemon: create ./config.json: „./config.json“ enthält ungültige Zeichen für einen lokalen Volumenamen, nur „[a-zA-Z0-9][a-zA-Z0-9_. -]" sind erlaubt.
  3. bestanden, ich habe eine Datei im Container

Beschreiben Sie die erwarteten Ergebnisse:
Ich habe erwartet, dass docker run das Mounten einer lokalen Datei mit einem relativen Pfad unterstützt.

zugehöriges Problem: https://github.com/docker/docker/issues/22016

versio1.11

Hilfreichster Kommentar

Ich werde dies schließen, da es wie beabsichtigt und dokumentiert funktioniert, auch wenn es etwas verwirrend ist. Wenn Sie der Meinung sind, dass die Dokumentation verbessert werden sollte, reichen Sie bitte einen Patch ein!

Sie können -v $PWD/../../path:/location tun, um einen relativen Pfad indirekt zu verwenden.

Alle 3 Kommentare

@subchen Dies ist ziemlich genau in der Dokumentation angegeben

Das container-dest muss immer ein absoluter Pfad wie /src/docs sein. Die host-src kann entweder ein absoluter Pfad oder ein Namenswert sein . Wenn Sie einen absoluten Pfad für das Host-Verzeichnis angeben, wird Docker an den von Ihnen angegebenen Pfad gebunden. Wenn Sie einen Namen angeben, erstellt Docker ein benanntes Volume mit diesem Namen.

  1. Docker sieht dies als Namen für ein Volume und erstellt daher das Volume, erstellt einen Ordner dafür und mountet das Volume darin.
  2. Docker sieht das _immer noch_ als Name für ein Volume, aber / ist im Namen eines Volumes nicht erlaubt, und daher schlägt es fehl
  3. Funktioniert wie erwartet :angel:

Der Grund, warum die docker CLI keinen relativen Pfad verwendet, liegt darin, dass sich der Docker-Client und der Docker-Daemon möglicherweise nicht auf demselben Host befinden. Wie soll also mit dem relativen Pfad umgegangen werden?

  • auf Kundenseite? aber dann, da sich der Daemon nicht auf demselben Host befindet, hat er die Datei möglicherweise nicht an dieser Stelle, und selbst wenn dies der Fall ist, ist der Inhalt der Datei derselbe?
  • auf Dämonenseite? aber relativ zu welchem ​​Pfad dann? Pfad des Dämons ?

Ich werde dies schließen, da es wie beabsichtigt und dokumentiert funktioniert, auch wenn es etwas verwirrend ist. Wenn Sie der Meinung sind, dass die Dokumentation verbessert werden sollte, reichen Sie bitte einen Patch ein!

Sie können -v $PWD/../../path:/location tun, um einen relativen Pfad indirekt zu verwenden.

@vdemeester @justincormack danke für deine Erklärungen.

-v $PWD/../../path:/location kann mein Problem lösen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen