‫わかりました｡ ボリュームとバインドマウントについて､ そしてなぜ永続的なデータについて心配する必要があるのか､
‫すべて学んだところで､ 実際のシナリオであるデータベースのアップグレードをやってみましょう｡
‫あるデータベースの特定のバージョンを実行している状況を想像してください｡
‫例えば､ postgresの場合､ セキュリティ修正､ バグ修正などのため､ パッチバージョンを更新する必要があるとします｡
‫通常､ システム上では､ ソフトウェアのアップデートを行うだけです｡ パッケージマネジメントシステムのアップデートやアップグレードを行うと､
‫ライブラリのアップデートも含めてすべて自分で処理してくれるんです｡
‫しかし､ それをコンテナで行うにはどうしたらいいのか｡
‫というのも､ コンテナ内のアプリケーションを更新するのではなく､ コンテナを新しいバージョンに置き換えるというベストプラクティスに従おうとする場合､
‫データベースでそれを行うにはどうしたらよいでしょうか｡
‫この課題では､ Docker Hubを使って､ 特定のバージョンのpostgresを更新するための情報を取得します｡
‫まずは､
‫具体的にバージョン9を使ってコンテナを作っていただくところから始めます｡ 6. 1となり､ 旧バージョンとなります｡ そして､ 名前付きボリュームを作成する必要があります｡
‫これはDocker Hubのドキュメントに寄りかかって､ postgresの公式リポジトリを利用することになります｡
‫そのバージョンのDockerfileを見て､ 必要なボリュームパスを知る必要があります｡
‫そして､ 左側でボリュームに好きな名前をつけることができます｡
‫ただし､ 右側にあるコロンは､ コンテナ内の実際のデータベースが置かれるパスであることを忘れないでください｡
‫すべてのことを把握し､ コンテナを起動したら､ データベースの作成とすべての起動が終了したことを確認するために､
‫ログをチェックし始める必要があります｡ なぜなら､ データベース・コンテナを最初に起動したとき､
‫通常は管理ユーザーやデフォルトのデータベースを作成するなど､ バックグラウンドでさまざまなことを行うからです｡
‫ログが止まるタイミングがあり､ その後はひたすら走り続けることになります｡
‫正しく実行できていれば､ docker volume ls を実行して､ そこに指定した名前でボリュームが表示されているのを確認し､
‫そのコンテナを停止することができるはずです｡ そして､ 新しいバージョンで新しいコンテナを作るのです｡
‫これは最初のコマンドと非常によく似たコマンドになりますが､
‫異なるバージョンを指定するだけです｡
‫もちろん､ この2つが同時に同じデータにアクセスすることはできないので､ 最初の1つを停止させていることを確認すること｡
‫起動したら､ その新しいコンテナのログをもう一度確認してみてください｡
‫見ていただきたいのは､ 初期起動のすべての作業をする必要がないため､ 起動ログが数行しかないことです｡
‫同じ名前のボリュームを使用していることがわかるのは､
‫2回目に起動したときに､ ログエントリーが4つか5つしかない場合です｡
‫これが現実のシナリオなんですね｡
‫本番用データベースを運用することがある場合など､ 最新の状態を維持する必要がある場合に行うことになります｡
‫ほとんどのデータベースシステムは､ メジャーアップグレードを自動的に行わないことに注意してください｡
‫通常､ 工具が必要です｡ postgresやMySQLでは､ それぞれ別のツールを実行する必要があります｡
‫これは本当にパッチのバージョンアップだけで､ スキーマの変更やデータコード自体の大きな更新は必要ない最後の番号です｡
‫前回同様､ つまづいても､
‫これは新しいことなので､ Docker Hubではそこまで明確になっていないかもしれないので､ 心配は無用です｡
‫もし､ ある時点で行き詰ってしまい､ Docker Hubが助けてくれない場合は､
‫次の講義をチェックしてください｡ 私がこの演習と同じことを行っています｡
‫頑張ってください｡