【ITニュース解説】How I turned Docker incidents into game levels (with postmortems)
2026年10月03日に「Dev.to」が公開したITニュース「How I turned Docker incidents into game levels (with postmortems)」について初心者にもわかりやすく解説しています。
ITニュース概要
学習ゲーム「DockerLinux」に、深夜にコンテナがダウンするなどの実践的なトラブルシューティングを学ぶ「ボスレベル」が追加された。仮想環境でDockerコマンドを使い、実際のインシデント対応を経験し、原因特定から解決までを練習できる。システムエンジニアを目指す初心者が、プレッシャー下での問題解決スキルを安全に習得する場を提供する。
ITニュース解説
システムエンジニアを目指す上で、Dockerコンテナの基本的な操作方法を学ぶことは非常に重要だ。しかし、多くのチュートリアルがコンテナの起動や停止方法に焦点を当てる一方で、実際にシステムが停止したり、予期せぬトラブルが発生した際にどのように対応すれば良いかについては、学ぶ機会が少ないのが現状だ。今回紹介する記事は、この重要なスキルを習得するための画期的なアプローチ、「Dockerインシデント対応をゲーム化する」というアイデアについて解説している。
この記事で紹介されているのは「DockerLinux」という、LinuxとDockerの操作を模擬ターミナルで学べる無料のゲームだ。このゲームに「ボスレベル」として、実際のインシデント対応をシミュレーションする機能が追加された。これは、午前3時にコンテナが停止し、多くのユーザーがサービス再開を待っているような、切迫した状況での対応能力を養うことを目的としている。プレイヤーは「oncall」と入力することで、インシデント対応の担当者としてPager(障害通知デバイス)を受け取ることになる。
ゲームが始まると、プレイヤーには具体的なインシデントチケットが提示される。例えば、「SEV-1・INC-101・ショップが停止しています」といった内容だ。サポートチームからは顧客がショップをロードできないという情報が入り、運用ボットからは午前3時12分にカーネルアップデートのためにサーバーが再起動したとの通知がある。プレイヤーは、擬似的な本番サーバー「prod-01」にログインし、制限時間(例えば5分)内に問題の原因を特定し、修正しなければならない。この時、プレイヤー自身のマシンには一切影響がないため、安心してトラブルシューティングに集中できる。
問題の調査には、実際に使われるコマンドが利用できる。docker ps -aで停止しているコンテナを含め、すべてのコンテナの状態を確認したり、docker logsでコンテナのログを調べて手がかりを探したり、curlでサービスの応答を確認したり、docker network inspectでネットワーク設定を検査したりする。また、「runbook.md」というファイルには、トラブルシューティングの手順が記載されており、これを参照することも可能だ。もし行き詰まった場合には、XP(経験値)を消費してヒントを得ることもできる。
問題を修正する方法は一つではない。正しい方法であれば、どのようなアプローチでも受け入れられる。ただし、実際のシステムと同様に、単にコンテナを再起動するだけでは解決しない場合もある。例えば、問題のあるコンテナは再起動後も再びクラッシュすることがあり、根本原因の特定と修正が求められる。問題を解決した後には、「ポストモーテム」(事後分析)が行われる。ここでは、問題解決にかかった時間、評価の星の数、そして根本原因とそこから得られる教訓が示される。これにより、プレイヤーは自分の対応を振り返り、次へと活かすことができる。
この記事で紹介されているインシデントは全部で6種類あり、それぞれ特定の学習レベルをクリアするとアンロックされる。例えば、「ショップ停止」はコンテナのライフサイクルを学べるレベル5の後にアンロックされ、docker ps -aやdocker startコマンドの活用が求められる。「Welcome to nginx?!」というインシデントは、ネットワークとポートに関するレベル6の後にアンロックされ、コンテナのポート設定の読み解きが必要だ。「データベースに到達できない」もレベル6の後にアンロックされ、docker network inspectやdocker network connectといったネットワーク関連コマンドを学ぶ機会となる。「デプロイ失敗」はイメージ構築に関するレベル8の後にアンロックされ、docker logsによる原因究明や、以前の安定版タグへのロールバックといったデプロイ管理のスキルが試される。「データ消失」はボリュームに関するレベル7の後にアンロックされ、docker volume lsでボリュームの一覧を確認したり、docker inspectでマウント情報を調べたりする。そして「Compose半起動」はDocker Composeに関するレベル9の後にアンロックされ、Composeの警告メッセージを読み解き、docker compose logsでログを確認するスキルが求められる。最初のインシデントの例として、サーバーが再起動した際に、ショップのWebコンテナに再起動ポリシーが設定されていなかったため停止した、というケースが挙げられている。docker psでは停止したコンテナは表示されないが、docker ps -aを使えばそれらも確認できるという点が重要な教訓となる。
このゲームの内部的な仕組みも非常に興味深い。全ての処理はブラウザ上で完結しており、小さなシェル、仮想ファイルシステム、そしてシミュレートされたDockerデーモンが動作する。これにより、イメージ、コンテナ、ポート、ネットワーク、ボリュームといったDockerの主要な要素がブラウザ内で再現される。各インシデントはデータとして定義されており、その解決条件は、プレイヤーが入力した具体的なコマンドではなく、最終的なシステムの状態によって判定される。例えば、「shop:1.0」というサービスがポート8080で正常に稼働しているかどうか、といった具合だ。このため、docker start、docker restart、あるいは適切なポート設定でdocker runを新規に実行するなど、どのような正しい方法でも問題解決として認識される。これは実際の運用環境における柔軟な対応を反映している。また、全てのインシデントには既知の修正方法が用意されており、テストスイートによって検証されるため、ゲームのエンジンが変更されてもインシデントが解決不可能になることはないという工夫もなされている。
スコアリングはシンプルに設定されており、問題の修正に成功すれば1つ星、さらに制限時間内に修正できれば追加で1つ星、ヒントを使わずに解決できればさらに1つ星が与えられ、最大で3つ星を獲得できる。
この記事が強調する重要な点は、システムエンジニアの仕事の大部分が、単にdocker runのようなコマンドを実行することではないということだ。実際の業務では、プレッシャーの中でdocker ps -aの出力を冷静に読み解き、数多くのログの中から重要な一行を見つけ出し、そして適切な修正を施す能力が求められる。このゲームは、そうした実践的なスキルを、現実世界で本当の障害に直面する前に、安全な環境で練習できる貴重な機会を提供する。
このDockerLinuxゲームは、dockerlinux.comで無料で利用でき、インストール不要でブラウザ上で直接プレイできる。Level 5をクリアした後、「oncall」と入力することで、すぐにインシデント対応のボスレベルに挑戦できる。システムエンジニアを目指す初心者にとって、理論だけでなく実践的なトラブルシューティング能力を身につけるための強力なツールとなるだろう。