是什么原因导致码头工作量被填充?

时间:2016-08-24 20:21:49

标签: docker

我正在运行以下命令:

docker run --name wiki --link wiki-mdb:mysql -p 9081:80 -v /var/data/wikimedia/apache2:/etc/apache2 -v /var/data/wikimedia/wiki:/var/www/html -d synctree/mediawiki

并且容器因为apache2无法在/ etc / apach2中找到它的配置文件而死...

好的,所以我在没有apache2卷的情况下再次运行命令:

docker run --name wiki --link wiki-mdb:mysql -p 9081:80 -v /var/data/wikimedia/wiki:/var/www/html -d synctree/mediawiki

并且它不仅可以工作......而且/ var / data / wikimedia / wiki以空白开头,填充了所需的所有php文件。

那有什么区别?为什么有些卷使用容器中的内容填充,而其他卷更喜欢将空白文件夹挂载到容器内部配置的顶部?

我最终通过运行sudo docker cp 9f9ba217a2ec:/etc/apache2 ./来生成默认的apache2文件夹来解决我的问题......但似乎应该有一些押韵或理由为什么在卷中生成内容。

我认为它可能与Dockerfile有关,但它没有任何具体的参考路径。

1 个答案:

答案 0 :(得分:0)

-v /var/data/wikimedia/apache2:/etc/apache2开始,将您的本地/var/data/wikimedia/apache2/etc/apache2链接到容器中。这会掩盖在构建时创建的容器文件夹。因为/etc/apache2是apache正在寻找其配置的地方,所以将/var/data/wikimedia/apache2没有配置链接到/etc/apache2会导致服务器找不到配置而无法启动。

保留此卷不会屏蔽在构建时创建的容器中已存在的/etc/apache2文件夹,从而保持配置文件在那里放置Dockerfile脚本构建时间完好无损。服务器找到合适的配置并按预期启动。

我不是php的专家,特别是在哪个时候生成哪些文件,但是我怀疑当服务器正常启动时,php文件被填充到容器中的/var/www/html(显然) 。因为后者只是指向本地/var/data/wikimedia/wiki的链接,所以您还可以在主机系统上看到这些文件。