はじめに
Docker は、コンテナを構築・実行するためのプラットフォームです。コンテナは、アプリケーションと、その実行に必要なファイルやライブラリをまとめてパッケージ化します。そのため、異なる環境でもアプリケーションがより一貫して動作します。
コンテナは、完全な仮想マシンとは異なります。コンテナはプロセスとファイルシステムの見え方を分離しながら、ホストのカーネルを共有します。このため、一般的にコンテナは仮想マシンよりも高速に起動し、使用するリソースも少なくなります。
コンテナが広く使われるようになった背景には、開発者や運用担当者が「あるマシンでは動作するのに、環境が異なる別のマシンでは動作しない」という問題にたびたび直面していたことがあります。コンテナは、アプリケーションのパッケージ化と起動方法を標準化することで、この環境差による不一致を減らします。
この実験では、Docker 環境のヘルスチェックを実施します。コンテナを本格的に使用する前に、Docker Engine がインストールされていること、クライアントが Docker Engine と通信できること、そしてテストイメージを正常に実行できることを確認することが重要です。
次の項目を確認します。
- インストールされている Docker のバージョンを確認する。
- テストコンテナを実行し、システムがイメージをダウンロードして実行できることを確認する。
- コンテナの状態を確認し、コンテナのライフサイクルを理解する。
Docker のバージョンを確認する
Docker 環境を確認する最初のステップは、Docker のコマンドラインインターフェース(CLI)にアクセスできるかどうかを確認することです。これにより、システムの PATH から docker コマンドを利用できることを確認できます。
この確認で証明できるのは、クライアントツールが存在することだけです。バックグラウンドで動作する Docker Engine が正常であることや、コンテナを実際に実行できることまでは、まだ確認できません。
ターミナルを開き、次のコマンドを実行します。
docker --version
出力例:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
出力には、インストールされている Docker のバージョンとビルド情報が表示されます。バージョン番号が表示されれば、Docker クライアントが正常にインストールされ、コマンドを受け付ける準備ができています。
テストコンテナを実行する
Docker クライアントを利用できることを確認できたので、次に、Docker Daemon(コンテナを管理するバックグラウンドサービス)が実行中で、コンテナを起動できることを確認します。
このクライアントとデーモンの分離は、Docker の中心的な仕組みです。入力する docker コマンドはクライアントであり、イメージの取得、コンテナの作成、ライフサイクルの管理といった実際の処理はデーモンが行います。
ここでは、公式の hello-world イメージを使用します。この最小構成のイメージは、インストール状態をテストするために特別に設計されています。
ターミナルで次のコマンドを実行します。
sudo docker run hello-world
なぜ sudo を使用するのでしょうか?
Docker デーモンは Unix ソケットを介して通信します。デフォルトでは、このソケットの所有者は root ユーザーです。そのため、他のユーザーは sudo を使用しなければアクセスできません。
このコマンドを実行すると何が起こるのでしょうか?
- ローカルを確認: Docker は、ローカルマシンに
hello-worldイメージが存在するか確認します。 - 取得: ローカルに見つからない場合、Docker は Docker Hub(パブリックレジストリ)からイメージをダウンロード(取得)します。
- 実行: Docker はそのイメージから新しいコンテナを作成し、実行します。
この一連の流れから、イメージとコンテナの違いも理解できます。イメージは再利用可能なテンプレートであり、コンテナはそのテンプレートから作成された、実行中または停止中のインスタンスです。
コンテナの出力と状態を確認する
このステップでは、前のコマンドの出力を確認し、コンテナが正常に実行されたことを検証します。
sudo docker run hello-world を実行すると、次のようなメッセージが表示されます。
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
このメッセージは、Docker の一連の処理、つまり Client、Daemon、Registry、Container がすべて正常に機能していることを示します。
hello-world コンテナは、このメッセージを表示した直後に終了するように設計されています。実行を停止した後も、コンテナ自体はシステム上に残ります。停止したコンテナも含めてすべてのコンテナを一覧表示すれば、これを確認できます。
これは、コンテナのライフサイクルを理解するための重要な最初の例です。コンテナは、Exited 状態でも存在できます。Docker では、「実行中であること」と「存在していること」は関連していますが、同じ意味ではありません。
次のコマンドを実行します。
sudo docker ps -a
ps:コンテナを一覧表示します。-a(または--all):実行中のコンテナだけでなく、すべてのコンテナを表示します。
出力に hello-world が表示され、状態が Exited になっていることを確認できます。これにより、コンテナが作成され、実行され、タスクを正常に完了したことが分かります。
まとめ
この実験では、Docker のインストール状態を正常に確認しました。次の操作を学びました。
- Docker のバージョンを確認し、CLI ツールがインストールされていることを確認する。
hello-worldコンテナを実行し、Docker デーモンへの接続とイメージの取得能力をテストする。- 出力を確認し、コンテナの履歴を一覧表示して、コンテナが実行されたことを検証する。
これらの確認が完了したら、環境はより高度な Docker 操作を行う準備ができています。



