Docker:数据卷容器未使用`docker create`命令实例化

时间:2015-03-18 21:26:14

标签: docker data-persistence volumes

所以,我正试图以一种除了上传之外的所有文件都被保留的方式打包我的WordPress图像。为了做到这一点,我创建了我的Dockerfile,它使用官方的WordPress图像作为基础,并添加了存档中的文件(包含所有WordPress文件,主题,插件等),如下所示:

FROM wordpress

ADD archive.tar.gz /var/www/html/

由于我希望保留上传内容,因此我创建了一个单独的数据卷容器,例如test2.com-wp-data

docker create -v /var/www/html/wp-content/uploads —name test2.com-wp-data wordpress

然后我只需通过—-volumes-from标志安装它:

docker run —name test2.com --volumes-from test2.com-wp-data -d --link test2.com-mysql:mysql myimage

但是,当我检查新创建的容器时,我找不到/var/www/html/wp-content/uploads

# docker inspect -f '{{.HostConfig.VolumesFrom}}' test2.com
[test2.com-wp-data]    

# docker inspect -f '{{.Volumes}}' test2.com
map[/var/www/html:/var/lib/docker/vfs/dir/4fff1d36d5aacd0b2c73977acf8fe680bda6fd891f2c4410a90f6c2dca4aaedf]

我可以看到/var/www/html/var/www/html/wp-content/uploads都设置为test2.com-wp-data数据容器中的卷:

# docker inspect -f '{{.Config.Volumes}}' test2.com-wp-data
map[/var/www/html:map[] /var/www/html/wp-content/uploads:map[]]

我知道默认情况下wordpress图片会创建一个/var/www/html卷,我并不介意,但这是否意味着如果单独安装,则忽略该文件夹下的任何内容?我是否需要构建自己的WordPress图像才能将/var/www/html/wp-content/uploads设置为我的WordPress容器中的卷?

非常感谢你的时间!

编辑:我使用与/var/www/html无关的文件夹测试了不同的设置,结果相同:—-volumes-from被忽略。

2 个答案:

答案 0 :(得分:1)

版本1.4 +的docker应该是你需要的工作。较旧版本的docker似乎不能很好地处理使用“create”而不是“run”实例化的仅数据容器。

答案 1 :(得分:0)

嗯,经过一些进一步的测试,我已经意识到,尽管文档指出,仅docker create并不足以使工作数据量正常工作。我只是通过使用docker run命令实例化它们来设法获得工作数据量,如下所示:

docker run —-name data -v /var/www/html/wp-content/uploads mysql true

这样容器会立即退出,但如果我使用它将数据卷附加到另一个容器,它会按预期工作。

如果有人知道这种行为背后的具体原因,我很乐意了解更多,特别是因为文档似乎有误导性。

谢谢!

编辑:事实证明我使用的是Docker 1.3.x,但尚未实现此功能,因此文档误导我的原因!