2016-03-30 6 views
2

私は配備にDockerを使用しています。Docker-Compose(.ymlファイル)を使用して〜6のコンテナを同時に起動します。 Composeファイル内の各イメージは、ローカルに検出されます(デプロイメント環境内のインターネット接続はありません)。次のようにドッカーが自発的にコンテナを再起動し、新しい画像タグで変更をコミットできるか?

それは私の展開がかかる手順を現状では、次のとおりで画像を使用して、最新の、など:最新、画像2:

  1. ラン(アップドッキングウィンドウは、構成などimage1のようなローカルの画像から6個のコンテナを起動
  2. 終了/停止すると、6つの停止したコンテナがあります。
  3. 再起動した各コンテナを手動でコミットします(ドッカーコミットxxx)
  4. 以前の世代のイメージを段階的に手動で再タグ付けします(image1:latest - > image1:バージョン1、イメージ1:バージョン2など)を手動で削除して、最新のタグを含むイメージを手動で削除します。
  5. コミットされた各コンテナ(現在はイメージ)を「最新」のタグ(image1:latest)で手動でタグ付けします。

このプロセスはむしろユーザーの関わりが強く、ユーザーの関与が必要なのは、「docker-compose up」コマンドを実行してからd自分自身/停止ドッカー - 作成する。

必要な最終目標は、スクリプト(Docker)がこれらのステップを単独で処理し、異なる世代の画像(image1:version1、image1:version2、image1:latestなど)で終わることです。

だから、私の質問は、どのように私は、スクリプト(またはドッカー)スクリプトを作成に取り掛かる(またはドッカーはそれを行う必要があり)となる缶自律:

  • 再起動の出射/停止時に停止した容器ドッカー-作曲
  • インクリメントバージョン番号(画像1:VERSION1、画像1:バージョン2など)に再起動コンテナ
  • 最新のタグで再タグ前の画像をコミットします。最新の画像
  • 、以前のイメージ1を削除新たにコミットされた再起動されたコンテナにタグを付けるhは現在画像です)

これはかなり時間がかかり、集中的な質問ですが、私は自分の仕事を達成するために必要なすべてのステップをお手伝いします。ありがとうございました。

+0

手順4と手順5はちょっと混乱します。私が読んでいるように、最新のタグを増分バージョンで削除し、最新のタグを削除して、インクリメンタルバージョンを最新のものにリタッチします。なぜそうなのか? – Tommy

+0

最初の/最初の実行では、6つの画像すべて(6つのコンテナを起動するためにdockerを作成するために必要です)を作成し、「最新の」タグで画像を作成します。それから、新しい世代の画像を保存して、「最新の」タグを与える必要があります。以前の世代(初期の人口)は "最新の"タグを持つことができないので、バージョン番号でタグ付けし直さなければなりません。 目的は、新しい世代の画像を保存し、最新の世代に次回の実行時に最新の画像を取り込んで画像を取り込ませることです。 – OriolesMagic

答えて

1

卓球プロジェクトではこれに対処しています。また、オート

https://github.com/CenturyLinkLabs/watchtower

は、ベース画像が更新され実行されているコンテナを再起動します。

たとえば、他のコンテナにリンクされているコンテナを再起動する必要がある場合は、リンクを破棄することなくインテリジェントにすることもできます。

私はそれを試したことはありませんが、ショットの価値がある!

どうすればいいのか教えてください。私は素晴らしいアイデアのようにこの質問を好きになるだろう。望楼は痛みを証明して手動でこれを実行しようとした場合、それはあなたのコンテナや画像に関する情報の負荷を与えるので、

PS ...

docker inspect 

はあなたの友達です。現在のステータスを判断できるようにします。