我的最后结论是,我无法设置/c/users/... 的位置,因为它不是在“Docker”中共享的。

在此之后,我能够看到/c/users/.. 目录中的中的E 220E 121我的容器实例。然后,我能够在每个实例中使用标志和这个目录,主要是将文件写入我的主机。我仍然不明白的是,我认为我现在并没有真正使用volumes .但它有效.
我试图让我的Docker托管Redis实例来持久化它的数据,但是挂载的卷似乎没有被使用。我使用Docker和VirtualBox/boot2docker进行组合,但是我已经迁移到Docker,在那里仍然可以使用复合文件,但是我不确定volumes属性。
我的docker-compose.yml文件:
vq-redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- /c/users/r/.docker/data/redis/data:/data如果我添加或删除volumes定义并不重要,因为它总是在docker inspect中显示类似于
"Mounts": [
{
"Name": "40791b26771b5d62778d85b0ef24e74e516f95d32cf217424232ce8f8a1b8c6f",
"Source": "/var/lib/docker/volumes/40791b26771b5d62778d85b0ef24e74e516f95d32cf217424232ce8f8a1b8c6f/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],volumes属性是否仍在使用Docker,还是我遗漏了一点?
编辑:
如果我跑..。
docker run --name vq-redis -d -v //c/users/r/.docker/data/vq-redis:/data redis redis-server --appendonly yes..。我可以看到容器出现在基特列和docker inspect,我可以看到一个挂载到我的本地文件夹。然而,本地文件夹没有显示在基特列..。

如果我将数据添加到驻留在容器中的Redis服务器上,那么停止容器并再次启动它--数据将消失。
我尝试手动设置基特列的本地文件夹。这似乎会重新启动容器,但我不确定是否再次传递初始参数。你说:
“如果卷没有联网运行”
我想他们实际上是联网运行的,就像在控制台上看到的那样。

不过,我仍然可以将数据添加到容器中承载的Redis实例中。但一旦我重新启动容器它就消失了..。
发布于 2016-07-07 07:32:04
应该管用的。我想你没有发现任何错误(例如,权限问题等等)。在重建之前,你要移除旧的构建。“/var/lib/docker/volumes/4079.”创建目录?您可以尝试在Windows上使用双前导斜杠,这对于某些版本来说是一种解决方案:
volumes:
- //c/users/r/.docker/data/redis/data:/dataRedis与未创建的卷没有任何关系,但您是否尝试过其他服务,甚至基本的docker create -v ...或docker run -v ...?
更新:在您对Docker如何工作的理解中可能存在一些空白,这可能会阻碍您的工作。
如果您执行docker run --name some-redis -d redis redis-server --appendonly yes,它将创建一个与docker inspect输出中的卷类似的卷。很明显,您的Windows机器上没有一个/var/lib/docker/volumes/...目录--它位于VM停靠主机(例如,boot2docker)中。如何到达Docker主机卷取决于多个因素。
如果这些卷没有在run上联网,重新启动也于事无补。做docker stop some-redis && docker rm some-redis和re-run.
例如:运行此命令docker run --name some-redis -d -v $(pwd)/data:/data redis redis-server --appendonly yes应该像您所期望的那样工作。ls ./data => appendonly.aof.
一开始显然是空的。销毁容器并创建一个具有相同目录的新容器将显示数据仍然存在:
docker exec some-redis echo "set bar baz" | redis-cli
docker stop some-redis
docker rm some-redis
docker run --name some-redis2 -d -v $(pwd)/data:/data redis redis-server --appendonly yes
docker exec some-redis2 echo "get bar" | redis-cli=> "baz“
(在销毁的容器中设置的"bar“的前一个值)。
如果这对您不起作用,那么您的环境可能会出现一些特定的问题--可能会尝试基于Vagrant的解决方案或beta Docker或本地Linux主机。
https://stackoverflow.com/questions/38234793
复制相似问题