2017-01-06 4 views

答えて

0

ボリュームとしてすべての宝石をインストール/更新するイメージを作成することで、この問題を解決します。あなたが宝石コンテナのDockerfileに、次の必要があります。

VOLUME /PATH/TO/GEMS 

その後、共有ボリュームを使用して、他のすべてのコンテナでこれらの宝石をインポートする:

docker run --volumes-from CONTAINER_WITH_GEMS --name CONTAINER_NAME IMAGE 

複数のコンテナには、1つ以上のデータボリュームを共有することができます。ただし、単一の共有ボリュームに複数のコンテナを書き込むと、データが破損する可能性があります。あなたのアプリケーションが共有データストアに書き込むように設計されているかどうかを確認することができれば、これを他の方法で解決することができます。

+0

私はデータ専用容器を意味すると思います。私は正しい?可能であればデータボリュームを使用します。 私はVOLUME命令を間違って理解しました。私はそれがイメージビルディング中にボリュームを作成すると思ったが、今はコンテナのみを実行している間にボリュームを作成することを理解している。 – user3309314

+0

はい。実際には、パスをボリュームとしてマークし、そのパスにコンテンツを追加すると、ボリュームには、ボリュームをインポートすることによって他のコンテナからアクセスできます。それは私が言及したものです。簡単に言うと、ボリュームに宝石がインストールされたイメージを作成し、このイメージからコンテナ(cont1)を作成し、cont1からボリュームをエクスポートする新しいコンテナをスポーンすると、宝石にアクセスできます。あなたがこれのためのサンプルをしたい場合私に教えてください。 –

0

短い答えはノーです。 Dockerfileでは、名前付きボリュームを指定することはできません。

ただし、ドッカー実行時のパラメータに関係なく、作成するコンテナフォルダをボリュームとして指定できます。 VOLUMEディレクティブを使用します。

しかし、ローカルディレクトリをボリュームにマップするようにユーザーに指示する必要があります。 docker-compose.ymlファイルをユーザーに配布して、プロセスを簡単にすることができます。

関連する問題