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

Sve*_*eur 13 ubuntu volumes docker

我正在尝试在Docker中为我的应用程序构建一个数据容器.我运行此命令以显示一些卷:

docker run --name svenv.nl-data -v /etc/environment -v /etc/ssl/certs -v /var/lib/mysql -d svenv/svenv.nl-data
Run Code Online (Sandbox Code Playgroud)

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

Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/aefa66cf55357e2e1e4f84c2d4d2d03fa2375c8900fe3c0e1e6bc02f13e54d05/etc/environment
Run Code Online (Sandbox Code Playgroud)

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

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

dr.*_*cre 8

你应该使用:

-v /etc/environment:/etc/environment
Run Code Online (Sandbox Code Playgroud)

代替:

-v /etc/environment
Run Code Online (Sandbox Code Playgroud)

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


Myk*_*rov 0

我猜是因为您没有挂载文件,而是声明挂载。试试这个符号:-v <full path to a file you want to overwrite the target with>:/etc/environment

  • 我不想用其他文件覆盖该文件。我想要实现的是将 /etc/environment 标记为卷,以便另一个容器可以使用 --volumes-from 使用它。这可能吗? (2认同)