2016-08-24 54 views
0

我運行下面的命令:是什麼導致碼頭卷被填充?

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 /數據/維基/維基它開始作爲空是流行與所有需要的PHP文件ulate。

所以有什麼區別?爲什麼有些卷由來自容器的內容填充,而其他卷則傾向於在容器內部配置之上安裝空白文件夾?

我最終通過運行sudo docker cp 9f9ba217a2ec:/etc/apache2 ./來生成一個默認的apache2文件夾來解決我的問題......但似乎應該有一些韻或原因爲什麼內容在卷中生成或沒有。

我認爲它可能與Dockerfile有關,但它沒有任何具體的參考任何路徑。

回答

0

-v /var/data/wikimedia/apache2:/etc/apache2開始,鏈接您的本地/var/data/wikimedia/apache2與容器內的/etc/apache2。這會掩蓋在構建時創建的容器文件夾。由於/etc/apache2是apache正在尋找其配置的地方,因此在沒有配置的情況下將/var/data/wikimedia/apache2鏈接到/etc/apache2會導致服務器找不到配置並且無法啓動。通過那裏的Dockerfile腳本在構建時完好放置

離開此卷出掩蔽在構建時創建的容器內的已存在的文件夾/etc/apache2,因此保持的配置文件。服務器找到合適的配置並按預期啓動。

我不是一個親在PHP中,特別是在哪些點上生成的文件,如果有的話,但我懷疑,因爲服務器正常啓動PHP文件正在填充到容器(顯然)/var/www/html。因爲後者只是一個鏈接到您的本地/var/data/wikimedia/wiki您還可以看到您的主機系統上的這些文件。

+0

我同意你用'/ etc/apache2'掩蓋當前內容的答案的第一部分...但是,我不確定你的答案的第二部分是否正確...它也開始作爲一個空白文件夾並應掩蓋現有內容。網絡服務器本身不生成.php內容。可能發生的事情是,apache2被屏蔽,因爲它是容器圖像的子層,只有在最上面的圖像中生成的內容填充到捲上......但是我找不到這個理論的文檔。 – CaffeineAddiction

相關問題