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

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

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

Dockerコンテナ内にこれらの概念がありますか? DockerコンテナでMySQLを実行している場合は、常にコンテナを停止し、コンテナでシェルを開き、MySQLを更新してアップグレードする必要がありますか?

答え1

私は受け入れられた答えに同意しません。まず、状態の分離を念頭に置いてコンテナを設計する必要があります(MySQLの場合、これは少なくとも/var/lib/mysql自己状態を意味します)。容量)。第二に、アップグレード戦略を決定する必要があります。最も進化したアプローチは、適切なパッケージアップグレードセットごとにバージョン管理イメージを作成し、実行中のコンテナから新しいコンテナにデータボリュームを置き換える前にテストします。次のようなものを使用する場合は、ダウンタイムが含まれている場合やダウンタイムがまったくない場合があります。お尻の痛み

この設定は初期設定のコストが高くなりますが、大規模なコンテナを所有している企業が使用するのと同じであり、時間の経過とともにメンテナンスコストが安くなります。

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

答え2

長い話を短く:自分で作らないとそんなことは起こりません。

これを行うための効率的な方法は、CMD実行中のエントリを開始する前に、Dockerfileこのファイルから 。apt-get update && apt-get upgrade -qqy

次に、更新がコンテナに到達するかどうかを確認する方法がいくつかあります。

  1. ホストオペレーティングシステムでcronジョブを定義してスケジュールに従ってコンテナを再起動すると、スケジュールに従ってコンテナが更新されアップグレードされることがあります。
  2. ソフトウェアのセキュリティ更新プログラムを購読し、影響を受けるパッケージが更新されたらコンテナを再起動します。

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

関連情報