2017-02-07 6 views
2

私はドッカーは、コンテナを作成して実行するようにから--volumes-とそのコンテナの名前を使用するコマンドを持っています4.0.0ドッキングウィンドウ・コンファイルのバージョン「3」を介してホストディレクトリをマウントし、再使用して、データ・ボリュームを

とt: - 別の容器と、それが正常に動作します

docker create -v /home/dev/docker/my/config:/home/myuser/4.0/config --name shared-config my/configurator:4.0.0 

上記画像私/コンフィギュレータから名前共有-config設定で新しいコンテナを作成します私は単に--volumesを使用して

docker run --volumes-from shared-config -p 8083:8080 -d my/oms:4.0.0 

から--volumes-を使用して、共有-configという名前でコンテナからボリュームを使用することができます(4.0.0を私/ OMS言う)他の容器を実行するためにrying -から、ボリュームを複数回使用してコンテナを必要にすることができます。

すべてここまでうまくいくようです。

今、私は、ファイルフォーマットのバージョン「3」を使用してドッキングウィンドウ・コンで上記をやろうとしていると私はそれがを作成されると、データ・ボリュームを再利用することができますどのようにを理解できていないです。バージョン3ではドッカーごとに作成されるため、discontinued use of --volumes-fromとなっています。 彼らは言う -

は、サービス間のボリュームを共有するトップレベルのボリュームのオプションを使用してそれを定義し、サービスレベルのボリュームのオプションを使用して、それを共有する各サービスからそれを参照するには。

上記の文章では、名前付きボリュームを参照しています。hereを参照してください。

しかし、データボリュームとしてホストディレクトリをマウントし、そのデータボリュームを再利用したいだけです。私の質問は、このデータボリュームをドッカー作成ファイルバージョン "3"で再利用する方法です。私はドッキングウィンドウ-COMPOSEを介して実行する各サービスのために、私はサービスレベルで

version: "3" 
services: 
    my-oms: 
    image: my/oms:4.0.0 
    ports: 
     - "8083:8080" 
    volumes: 
     - /home/dev/docker/my/config:/home/myuser/4.0/config 

しかし、私は私のホストのディレクトリを使用する場合(/ホームは/ dev /ドッキングウィンドウ/私をボリュームキーを使用することができる最も簡単に 、/config)を異なるサービスのデータボリュームとして使用します。私は各サービスのボリュームキーを持っているか、実際には他のサービス(--volumes-fromを使ったやり方)でデータボリュームを再利用できるドッカーの "3"バージョンを作成するのに良い方法があります。

私が逃したポインタや提案などはありますか?

答えて

3

構文の繰り返しを避けるための最善の選択肢はextends optionを使用して、ドッキングウィンドウ-compose.ymlを拡張することです:

ですから、のように見える共通services.ymlを持つことができます。

version: "3" 
services: 
    generic-vol: 
    volumes: 
     - /home/dev/docker/my/config:/home/myuser/4.0/config 

そして、あなたのドッカーが作ってください。YMLが見えるように更新されます:

version: "3" 
services: 
    my-oms: 
    extends: 
     file: common-services.yml 
     service: generic-vol 
    image: my/oms:4.0.0 
    ports: 
     - "8083:8080" 

docker stack deploy -c docker-compose.ymlは、すべてのこれらのオプションをサポートしていないことに注意してください、私は私のプロジェクトのための変数と複数のドッキングウィンドウ・コンファイルを使用して問題が発生しました。その解決策は、docker-composeを使用してファイルを解析し、スタック展開でdocker-compose config >docker-compose.stack.ymlと一緒に使用できるものにしてから、そのymlファイルをスタック展開に渡すことです。

もう1つの選択肢は、yml構文自体の機能を利用することです。これは、アンカーとそれらのアンカーへの参照を許可します。その構文は次のようになります。

version: "3" 
services: 
    my-oms: 
    image: my/oms:4.0.0 
    ports: 
     - "8083:8080" 
    volumes: &common-vol 
     - /home/dev/docker/my/config:/home/myuser/4.0/config 
    my-xyz: 
    image: my/xyz:4.0.0 
    ports: 
     - "8888:8080" 
    volumes: *common-vol 

最初&common-volは、アンカーを作成し、*common-vol後にはYMLデータと同じ部分への参照です。

+0

私には2番目の選択肢があります。ありがとうございました。 – Saurabh

関連する問題