0

因此,我正在尝试以一种方式打包我的 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被忽略。

4

2 回答 2

1

docker 1.4 + 版本应该是你需要让它工作的东西。旧版本的 docker 似乎不能很好地与使用“create”而不是“run”实例化的纯数据容器一起使用。

于 2015-03-19T13:21:32.377 回答
0

好吧,经过一些进一步的测试后,我意识到,尽管文档表明,docker create仅靠一个工作数据量是不够的。我只能通过使用docker run命令实例化它们来获得工作数据量,如下所示:

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

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

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

谢谢!

编辑:原来我使用的是 Docker 1.3.x,它还没有实现这个功能,因此文档对我有误导性!

于 2015-03-19T00:50:16.800 回答