Dockerコンテナー内のアプリケーションの更新?


9

通常、サーバーでは、セキュリティ関連のパッチの自動更新が構成されます。したがって、MySQL 5.5を実行しているときに新しいセキュリティパッチが出た場合、Ubuntu Serverはアップグレードを適用してMySQLを再起動し、自動化された方法で保護を維持します。もちろん、これは無効にすることができますが、少し怠惰な私たちにとっては役に立ちます;)

そのような概念はDockerコンテナー内に存在しますか?MySQLをDockerコンテナーで実行している場合、コンテナーを常に停止し、コンテナーを開いてから、MySQLを更新およびアップグレードする必要がありますか?


これはDockerであり、LXCの質問ではありません。LXCコンテナー自体は、同じカーネルで実行される別のLinuxディストリビューションなので、同じコマンドを使用してLXCコンテナーシステムを更新するだけです。
警官、2014

回答:


13

受け入れられた回答に同意しません。まず、状態の分離を念頭に置いてコンテナを設計する必要があります(MySQLの場合、これは少なくとも/var/lib/mysql独自のボリュームになることを意味します)。次に、アップグレードの戦略を決定する必要があります。最先端の技術は、aptパッケージのアップグレードのセットごとにバージョン管理されたイメージを作成し、実行中のコンテナーから新しいコンテナーにデータボリュームを交換する前にそれらをテストすることです。Hipacheなどを使用している場合、これにはダウンタイムが含まれるか、まったくダウンタイムが含まれない可能性があります。

このセットアップは、最初のセットアップよりも費用がかかりますが、コンテナの大規模な企業で使用されているものと同じであり、長期にわたって維持する方が安価です。

さらに、パッケージのアップグレードは実行中のコンテナーを最終的に破壊する可能性があるため、古いソフトウェアを実行しないため、実行中のコンテナーにそれらを適用することはベストプラクティスではありません。


+1これはベストプラクティスです。サーバーコンテナーにデータを保存することは問題を求めているだけです。
booyaa 2015年

4

TL; DR:自分で構築しなければ、それは起こりません。

これを行う効果的な方法は、で指定されCMDたコンテナのカスタム起動スクリプトを記述するだけDockerfileです。このファイルで、実行しているapt-get update && apt-get upgrade -qqyものを開始する前にを実行します。

次に、更新が確実にコンテナに届くようにする方法がいくつかあります。

  1. ホストOSでcronジョブを定義して、コンテナーをスケジュールどおりに再起動し、スケジュールに従ってコンテナーを更新およびアップグレードします。
  2. ソフトウェアのセキュリティ更新をサブスクライブし、影響を受けるパッケージの更新時にコンテナーを再起動します。

最適化と自動化が最も簡単なことではありませんが、それは可能です。


1
ページを読み進めてください。deim0sの方が良い答えです。
mc0e 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.