Moby: no se puede montar un archivo host usando una ruta relativa

Creado en 7 jul. 2016  ·  3Comentarios  ·  Fuente: moby/moby

INFORMACIÓN DEL INFORME DE ERRORES

Salida de 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

Salida de 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

Pasos para reproducir el problema:

  1. ventana acoplable ejecutar --rm -it -v config.json:/etc/config.json centos:7 bash
  2. ventana acoplable ejecutar --rm -it -v ./config.json:/etc/config.json centos:7 bash
  3. ventana acoplable ejecutar --rm -it -v /root/config.json:/etc/config.json centos:7 bash

Describa los resultados que recibió:

  1. Obtengo una carpeta "/etc/config.json" en el contenedor, no un archivo
  2. ventana acoplable: Respuesta de error del demonio: crear ./config.json: "./config.json" incluye caracteres no válidos para un nombre de volumen local, solo "[a-zA-Z0-9][a-zA-Z0-9_. -]" están permitidos.
  3. aprobado, tengo un archivo en el contenedor

Describa los resultados que esperaba:
Esperaba que docker run permitiera montar un archivo local usando una ruta relativa.

problema relacionado: https://github.com/docker/docker/issues/22016

versio1.11

Comentario más útil

Voy a cerrar esto ya que funciona según lo previsto y documentado, incluso si es un poco confuso. Si cree que la documentación debe mejorarse, ¡envíe un parche!

Puede hacer -v $PWD/../../path:/location para usar una ruta relativa indirectamente.

Todos 3 comentarios

@subchen Esto está más o menos indicado en la documentación.

El destino del contenedor siempre debe ser una ruta absoluta como /src/docs. host-src puede ser una ruta absoluta o un valor de nombre . Si proporciona una ruta absoluta para host-dir, Docker se vincula a la ruta que especifique. Si proporciona un nombre, Docker crea un volumen con ese nombre.

  1. docker ve eso como un nombre para un volumen y, por lo tanto, crea el volumen, crea una carpeta para él dentro y monta el volumen en él.
  2. docker _still_ ve eso como un nombre para un volumen pero / no está permitido en el nombre de un volumen, y por lo tanto falla
  3. funcionando como se esperaba :angel:

La razón por la cual el cli docker no toma una ruta relativa es porque el cliente de la ventana acoplable y el demonio de la ventana acoplable podrían no estar en el mismo host. Entonces, ¿cómo se debe manejar la ruta relativa?

  • del lado del cliente? pero entonces, el daemon no está en el mismo host, podría no tener el archivo en este lugar, e incluso si lo tiene, ¿el contenido del archivo es el mismo?
  • en el lado del demonio? pero en relación con qué camino entonces? camino del demonio?

Voy a cerrar esto ya que funciona según lo previsto y documentado, incluso si es un poco confuso. Si cree que la documentación debe mejorarse, ¡envíe un parche!

Puede hacer -v $PWD/../../path:/location para usar una ruta relativa indirectamente.

@vdemeester @justincormack gracias por tu explicación.

-v $PWD/../../path:/location puede resolver mi problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones