Docker文档指出,可以将单个文件装载到Docker容器中:
-v标志还可用于从主机挂载单个文件-而不是目录。 $ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash 这会将您放入新容器中的bash外壳中,您将从主机获得bash历史记录,退出容器时,主机将具有在容器中键入命令的历史记录。
-v标志还可用于从主机挂载单个文件-而不是目录。
$ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
这会将您放入新容器中的bash外壳中,您将从主机获得bash历史记录,退出容器时,主机将具有在容器中键入命令的历史记录。
但是,当我尝试将文件挂载为目录时:
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文件夹构建的图像的名称。
test
docker build -t test
/test
尝试Dockerfile使用:
Dockerfile
CMD ["ls", "-lah", "/"] or CMD ["cat", "/file.json"]
和:
docker run --rm -it -v $(pwd)/file.json:/file.json test
请注意使用$(pwd)以便以其完整的绝对路径挂载文件(不支持相对路径)
$(pwd)