Docker documentation表示可以将单个文件装入Docker容器:

v标志还可以用于从主机装载单个文件,而不仅仅是目录.

$ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

这将把您放入一个新容器中的bash shell中,您将拥有来自主机的bash历史记录,当您退出容器时,主机将拥有在容器中键入的命令的历史记录.

但是,当我try 这样做时,文件会装载为目录:

tom@u ~/project $ docker run --rm -it -v file.json:/file.json test
total 80K
drwxr-xr-x  9 root root 4.0K Dec  7 12:58 .
drwxr-xr-x 63 root root 4.0K Dec  7 12:58 ..
drwxr-xr-x  2 root root 4.0K Dec  4 16:10 file.json

我的Dockerfile如下所示:

FROM ubuntu:14.04
MAINTAINER Tom
CMD ["ls", "-lah", "/test"]

Docker版本是1.9.1,构建a34a1d5.

这是一个文档问题,是我的误解,还是发生了其他事情?

推荐答案

test是用"docker build -t test"创建的图像的名称,而不是/test文件夹.

试试Dockerfile码,搭配:

CMD ["ls", "-lah", "/"]
or
CMD ["cat", "/file.json"]

以及:

docker run --rm -it -v $(pwd)/file.json:/file.json test

请注意,使用$(pwd)可以装载具有完整绝对路径的文件(不支持相对路径)

By using $(pwd), you will get an absolute path which does exists, and respect the case, as opposed to a file name or path which might not exist.
An non-existing host path would be mounted as a folder in the container.

Linux相关问答推荐

不带空格的字符串连接形成文件路径

在不编写任何代码的情况下,是否有一个命令可以检索当前 shell 的亲和力中的可用内核数?

我需要制作一个 awk 脚本来解析文件中的文本.我不确定我是否做得正确

另一个远程的 Git 合并分支

nohup 是否可以跨管道工作?

BASEDIR 环境变量未正确定义

如何判断 Ubuntu 12.04 LTS 上是否安装了多个版本的 PHP?

具体来说,fork() 如何处理 Linux 中 malloc() 动态分配的内存?

如何在 Linux 中设置目录大小限制?

如何更改目录中所有文件中所有出现的单词

无法创建Java虚拟机

kdevtmpfsi 使用整个 CPU

Linux 的 TextMate 替代品

如何从 Linux 中的用户空间访问物理地址?

如何搜索文件并将它们压缩到一个 zip 文件中

如何在没有空格的情况下打印 awk?

区分 Java 线程和 OS 线程?

如何将初始输入通过管道传输到随后将是交互式的进程中?

如何安排 tcpdump 在特定时间段内运行?

Ionic android 构建错误 - 找不到ANDROID_HOME环境变量