はじめに
Docker は、現代のソフトウェア開発に不可欠なツールとなり、開発者がアプリケーションを整合性があり、信頼性の高い方法でパッケージ化し、デプロイすることを可能にしています。Docker イメージは、コンテナ化されたアプリケーションの構成要素として機能し、簡単に共有およびデプロイできる、事前に構成された環境を提供します。
この実践的な実験(Lab)では、Docker コマンドラインインターフェースを使用して Docker イメージを検索し、これらのイメージをローカルマシンにプルし、それらのイメージに基づいてコンテナを実行する方法を学びます。このチュートリアルを終えるまでに、特定のプロジェクト要件を満たす Docker イメージを見つけて使用するためのスキルを習得できます。
Docker のインストール確認
Docker イメージの検索を開始する前に、まず Docker がシステムに正しくインストールされ、実行されていることを確認しましょう。
Docker のインストール確認
ターミナルウィンドウを開き、次のコマンドを実行して Docker がインストールされているかどうかを確認します。
docker --version
次のような出力が表示されるはずです。
Docker version 20.10.21, build baeda1f
これにより、Docker がシステムにインストールされていることが確認されます。インストールによっては、バージョン番号が異なる場合があります。
Docker サービスのステータス確認
また、次のコマンドを実行して、Docker サービスが正常に実行されているかどうかも確認しましょう。
sudo systemctl status docker
Docker サービスがアクティブで実行中であることを示す出力が表示されるはずです。
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since...
何らかの理由で Docker が実行されていない場合は、次のコマンドで起動できます。
sudo systemctl start docker
Docker イメージの理解
Docker イメージは、コンテナを作成するための一連の命令を含む、読み取り専用のテンプレートです。イメージを、アプリケーションとその環境、依存関係、および構成のスナップショットまたは青写真と考えることができます。
Docker イメージは次のとおりです。
- レイヤー化(Layered): イメージ間で共有できる一連のレイヤーを使用して構築されます。
- 読み取り専用(Read-only): 作成後は変更できません。
- 名前とタグ付け(Named and tagged): 名前とオプションのタグ(例:
ubuntu:22.04)で識別されます。
次のステップでは、これらのイメージを検索する方法を学びます。
Docker イメージの検索
Docker Hub は、Docker イメージの公式パブリックレジストリです。ソフトウェアベンダーによってメンテナンスされている公式イメージや、Docker ユーザーによって作成されたコミュニティイメージなど、数千のイメージが含まれています。
基本的なイメージ検索
Docker イメージを検索するには、検索語句の後に docker search コマンドを使用します。Ubuntu イメージを検索してみましょう。
docker search ubuntu
次のような出力が表示されます。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14938 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 112 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 254 [OK]
...
出力には以下が表示されます。
- NAME: イメージ名
- DESCRIPTION: イメージの簡単な説明
- STARS: イメージをスターしたユーザーの数(人気度指標)
- OFFICIAL: ソフトウェアベンダーによってメンテナンスされている公式イメージを示すタグ
- AUTOMATED: 自動プロセスによって構築されたイメージを示すタグ
検索結果のフィルタリング
--filter オプションを使用して、検索結果をフィルタリングできます。たとえば、公式イメージのみを表示するには、次のようにします。
docker search --filter=is-official=true ubuntu
100 個以上のスターを持つイメージ(人気のイメージ)を見つけるには、次のようにします。
docker search --filter=stars=100 ubuntu
複数のフィルターを組み合わせることもできます。
docker search --filter=is-official=true --filter=stars=100 nginx
このコマンドは、100 個以上のスターを持つ公式 Nginx イメージを検索します。
特定のバージョンの検索
docker search コマンドはイメージタグ(バージョン)を表示しませんが、次の方法で見つけることができます。
- Docker Hub Web サイト(hub.docker.com)にアクセスする
docker image inspectコマンドを使用する(イメージをプルした後)
たとえば、利用可能なすべての Ubuntu バージョンを表示するには、以下にアクセスしてください。 https://hub.docker.com/_/ubuntu?tab=tags
適切なイメージの選択
Docker イメージを選択する際には、以下を考慮してください。
- 公式イメージ(Official images): ソフトウェアベンダーによってメンテナンスされているため、公式イメージを優先します。
- 人気のイメージ(Popular images): スター数が多いほど、ユーザーが多く、メンテナンスが優れている可能性があります。
- 最近の更新(Recent updates): イメージが最後に更新された時期を確認します。
- ドキュメント(Documentation): 優れたドキュメントが用意されているイメージを探します。
- サイズ(Size): イメージサイズを考慮します。小さいイメージの方がダウンロードが速くなります。
Docker イメージのダウンロード
使用したいイメージが見つかったら、docker pull コマンドを使用してローカルマシンにダウンロードできます。
イメージのプル
公式 Ubuntu イメージをプルしてみましょう。
docker pull ubuntu
次のような出力が表示されます。
Using default tag: latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
デフォルトでは、Docker は latest タグをプルします。特定のバージョンをプルするには、タグを追加します。
docker pull ubuntu:20.04
その特定のバージョンのダウンロードの進行状況を示す出力が表示されます。
ダウンロードしたイメージのリスト表示
ダウンロードしたすべてのイメージを表示するには、次を使用します。
docker images
または、新しいコマンド形式を使用します。
docker image ls
どちらのコマンドも同じ出力を生成します。
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1318b700e415 4 weeks ago 72.8MB
ubuntu 20.04 1318b700e415 4 weeks ago 72.8MB
イメージタグの理解
Docker イメージは、タグによって識別されます。タグの形式は通常次のとおりです。
repository:tag
ここで、
- repository: 通常は
username/image-nameまたは公式イメージの場合は単にimage-nameの形式です。 - tag: バージョンを指定します(例:
latest,20.04,3.9-alpine)。
タグを省略すると、Docker は latest タグを要求すると見なします。
イメージの詳細の取得
イメージに関する詳細情報を表示するには、次を使用します。
docker image inspect ubuntu:latest
このコマンドは、レイヤー、構成、環境変数など、すべてのイメージメタデータを含む JSON オブジェクトを表示します。
イメージレイヤーの履歴を表示するには、次を使用します。
docker history ubuntu:latest
これにより、イメージがレイヤーごとにどのように構築されたかが表示されます。
イメージからコンテナを実行する
いくつかの Docker イメージをダウンロードしたので、これらのイメージに基づいてコンテナを作成して実行する方法を学びましょう。
基本的なコンテナの実行
イメージからコンテナを実行するには、docker run コマンドを使用します。
docker run ubuntu echo "Hello from Docker"
このコマンドは以下を行います。
- Ubuntu イメージに基づいて新しいコンテナを作成します。
- コンテナ内でコマンド
echo "Hello from Docker"を実行します。 - コマンドが完了すると終了します。
次のような出力が表示されます。
Hello from Docker
対話型コンテナの実行
コンテナと対話するには、-it フラグ(対話型ターミナル)を使用します。
docker run -it ubuntu bash
これにより、コンテナ内で bash シェルが起動します。これで、事実上コンテナの「内部」に入り、コマンドを実行できます。
いくつかのコマンドを試してください。
ls
cat /etc/os-release
コンテナを終了するには、次のように入力します。
exit
実行中のコンテナのリスト表示
実行中のすべてのコンテナを表示するには、次を使用します。
docker ps
コンテナは完了後すぐに終了するため、出力が表示されない場合があります。停止したコンテナを含むすべてのコンテナを表示するには、次を使用します。
docker ps -a
これにより、すべてのコンテナ、そのステータス、および作成/終了された日時が表示されます。
コンテナのライフサイクル
コンテナにはライフサイクルがあります。
- Created: コンテナは作成されましたが、まだ開始されていません。
- Running: コンテナは現在実行中です。
- Paused: コンテナの実行が一時停止しています。
- Stopped: コンテナは終了しましたが、まだ存在しています。
- Removed: コンテナは削除されました。
停止したコンテナを削除するには、次を使用します。
docker rm <container_id>
<container_id> を docker ps -a の出力に表示される ID に置き換えます。
終了後にコンテナを自動的に削除するには、--rm フラグを使用します。
docker run --rm ubuntu echo "This container will be removed after execution"
Web サーバーコンテナの実行
Nginx Web サーバーを実行して、もう少し実践的なことを試してみましょう。
docker pull nginx:alpine
これにより、Alpine Linux に基づく軽量の Nginx イメージがプルされます。
次に、ホストのポート 8080 をコンテナのポート 80 にマッピングするコンテナを実行します。
docker run -d -p 8080:80 --name my-nginx nginx:alpine
このコマンドは以下を行います。
-d: コンテナをデタッチモード(バックグラウンド)で実行します。-p 8080:80: ホストのポート 8080 をコンテナのポート 80 にマッピングします。--name my-nginx: コンテナに「my-nginx」という名前を付けます。
これで、Web ブラウザで http://localhost:8080 に移動するか、curl を使用して Nginx のウェルカムページにアクセスできます。
curl http://localhost:8080
Nginx のウェルカムページの HTML コンテンツが表示されるはずです。
このコンテナを停止して削除するには、次のようにします。
docker stop my-nginx
docker rm my-nginx
まとめ
この Docker イメージの検索と使用に関する実験を完了したことをおめでとうございます。このチュートリアルを通して、あなたは以下のことを行いました。
- Docker のインストールを確認し、Docker イメージの概念を理解しました。
docker searchコマンドを使用して Docker イメージを検索する方法を学びました。docker pullを使用して、Docker イメージをローカルマシンにダウンロードしました。- ローカルの Docker イメージをリスト表示し、検査しました。
- さまざまな
docker runオプションを使用して、これらのイメージからコンテナを作成し、実行しました。 - コンテナのライフサイクルを理解し、コンテナを管理する方法を理解しました。
これらのスキルは、開発プロジェクトで Docker を使用するための基礎となります。これで、Docker イメージを検索、ダウンロード、使用して、アプリケーション用のコンテナ化された環境を作成できます。
Docker の旅の次のステップには、以下が含まれます。
- Dockerfile を使用して独自の Docker イメージを作成する方法を学ぶ
- Docker ネットワーキングとデータの永続性を理解する
- マルチコンテナアプリケーション向けの Docker Compose を探求する
- Kubernetes を使用したコンテナオーケストレーションに飛び込む
さまざまな Docker イメージを試して、開発ワークフローを加速するために利用できる、事前に構築されたコンテナの広大なエコシステムを発見し続けてください。



