test
es el nombre de su imagen que ha construido con 'docker build -t test
', no un /test
carpeta.
Prueba con un Dockerfile
con:
CMD ["ls", "-lah", "/"]
or
CMD ["cat", "/file.json"]
Y:
docker run --rm -it -v $(pwd)/file.json:/file.json test
Tenga en cuenta el uso de $(pwd)
para montar un archivo con su ruta absoluta completa (no se admiten rutas relativas)
Usando $(pwd)
, obtendrá una ruta absoluta que existe y respetará las mayúsculas y minúsculas, a diferencia de un nombre de archivo o ruta que podría no existir.
Una ruta de host inexistente se montaría como una carpeta en el contenedor.
Tal vez eso esté claro en las respuestas anteriores ... pero me tomó un tiempo descubrirlo en mi caso.
La razón subyacente por la que el archivo que se comparte con -v aparece como un directorio en lugar de un archivo es que Docker no pudo encontrar el archivo en el host. Entonces, Docker crea un nuevo directorio en el contenedor con el nombre del archivo no existente en el host, ya que Docker cree que el usuario solo quiere compartir un volumen/directorio que se creará en el futuro.
Entonces, en el problema informado anteriormente, si usó un directorio relativo en el comando -v y la ventana acoplable no comprende los directorios relativos, eso significa que el archivo no se encontró en el host y, por lo tanto, la ventana acoplable creó un directorio. Y la respuesta anterior que sugiere usar $(pwd) será la solución correcta cuando el problema se deba a un directorio relativo.
Pero para aquellos que leen esta página que no usan un directorio relativo y tienen el mismo problema... intente entender por qué falta el archivo en el host.
Podría ser un error tipográfico estúpido...
Podría ser que esté ejecutando el comando "docker run" desde un cliente que genera el contenedor docker en un host diferente y el archivo que se comparte no existe en ese host diferente. El archivo que se comparte con -v debe existir en el host donde el agente acoplable generará el contenedor... no necesariamente en el cliente donde se ejecuta el comando "docker run -v..." (aunque serán los mismos en muchos casos).
Hay otras explicaciones posibles arriba para Mac y Windows... esa también podría ser.
Entonces, el archivo que falta en el host es el problema... resuelva el problema en su configuración... usar $(pwd) podría ser la solución, pero no siempre.