Docker - 无法在现有文件上挂载卷,文件存在

时间:2015-11-24 20:55:49

标签: ubuntu docker volumes

我试图在Docker中为我的应用程序构建数据容器。我运行此命令来公开一些卷:

docker run --name svenv.nl-data -v /etc/environment -v /etc/ssl/certs -v /var/lib/mysql -d svenv/svenv.nl-data

问题是我从这个命令中得到了这个错误:

Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/aefa66cf55357e2e1e4f84c2d4d2d03fa2375c8900fe3c0e1e6bc02f13e54d05/etc/environment

如果我正确理解Docker文档。支持为单个文件创建卷。所以我不明白为什么会收到这个错误。

有人可以向我解释这个吗?我在Ubuntu 14.04上运行Docker 1.9.1。

3 个答案:

答案 0 :(得分:6)

您应该使用:

-v /etc/environment:/etc/environment

而不是:

-v /etc/environment

前者将容器卷映射到主机卷。 后者尝试在/etc/environment创建新卷,但由于此目录已存在,因此失败。

答案 1 :(得分:0)

我猜是因为你没有挂载文件而是声明挂载。请尝试使用此表示法:-v <full path to a file you want to overwrite the target with>:/etc/environment

答案 2 :(得分:0)

假设您在Linux下,请运行以下代码

docker run -it --rm -v /local_dir:/image_root_dir/mount_dir image_name

以下是一些细节:

-it: interactive terminal 
--rm: remove container after exit the container
-v: volume or say mount your local directory to a volume

由于mount函数将“覆盖”图像中的目录,因此应始终在images根目录下创建一个新目录。

访问官方文档Use bind mounts以获取更多信息。