我试图在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。
答案 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以获取更多信息。