2016-08-24 9 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にその設定ファイルを見つけるカントので...死ぬ

[OK]を、私はせずに再度コマンドを実行しますapache2の量:

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

だけでなく、それは動作しません...しかし、空として始まったの/ var /データ/ウィキメディア/ wikiがポップです必要なすべてのPHPファイルと逐次比較します。

違いは何ですか?一部のボリュームにはコンテナのコンテンツが格納されますが、他のボリュームはコンテナの内部構成の上に空のフォルダをマウントする方が好都合です。

私はsudo docker cp 9f9ba217a2ec:/etc/apache2 ./をデフォルトのapache2フォルダを生成するように実行することで問題を解決しました...しかし、コンテンツがボリューム内に生成される理由や理由があるようです。

私はそれがDockerfileと何か関係があると思っていましたが、どちらのパスにも特定の参照はありません。

答えて

0

コンテナ内/etc/apache2/var/data/wikimedia/apache2、ローカル-v /var/data/wikimedia/apache2:/etc/apache2のリンクから開始。これは、ビルド時に作成されたコンテナフォルダをマスクします。 /etc/apache2はApacheの設定を探している場所なので、設定なしで/var/data/wikimedia/apache2/etc/apache2にリンクすると、設定が見つからず、開始に失敗します。 をこのボリュームを除外

は、このように無傷でビルド時にそこでDockerfileスクリプトを置き、構成ファイルを保ち、ビルド時に作成されたコンテナ内にすでに存在/etc/apache2フォルダをマスクしません。サーバーは適切な構成を見つけて、期待どおりに開始します。

私はPHPのプロではなく、特にどのファイルが生成されたのかはっきりしていますが、サーバーが正常に起動すると、通常はPHPファイルがコンテナ内のに読み込まれているようです。後者はあなたのローカル/var/data/wikimedia/wikiへの単なるリンクであるため、あなたのホストシステム上のそれらのファイルも見ることができます。

+0

私は現在のコンテンツをマスキングする '/ etc/apache2'で答えの最初の部分に同意します...しかし、私はあなたの答えの第2部分が正しいと確信していません...それも空白のフォルダとして開始します既存のコンテンツを隠す必要があります。 Webサーバー自体が.phpコンテンツを生成していません。起こっていることは、それがコンテナ画像のサブレイヤであり、一番上の画像で生成されたコンテンツだけがボリューム上に生成されるため、apache2がマスクされてしまうことです...しかし、私はこの理論のためのドキュメンテーションを見つけることはできません。 – CaffeineAddiction

関連する問題