Docker イメージの検索方法

DockerBeginner
オンラインで実践に進む

はじめに

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 コマンドはイメージタグ(バージョン)を表示しませんが、次の方法で見つけることができます。

  1. Docker Hub Web サイト(hub.docker.com)にアクセスする
  2. docker image inspect コマンドを使用する(イメージをプルした後)

たとえば、利用可能なすべての Ubuntu バージョンを表示するには、以下にアクセスしてください。 https://hub.docker.com/_/ubuntu?tab=tags

適切なイメージの選択

Docker イメージを選択する際には、以下を考慮してください。

  1. 公式イメージ(Official images): ソフトウェアベンダーによってメンテナンスされているため、公式イメージを優先します。
  2. 人気のイメージ(Popular images): スター数が多いほど、ユーザーが多く、メンテナンスが優れている可能性があります。
  3. 最近の更新(Recent updates): イメージが最後に更新された時期を確認します。
  4. ドキュメント(Documentation): 優れたドキュメントが用意されているイメージを探します。
  5. サイズ(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"

このコマンドは以下を行います。

  1. Ubuntu イメージに基づいて新しいコンテナを作成します。
  2. コンテナ内でコマンド echo "Hello from Docker" を実行します。
  3. コマンドが完了すると終了します。

次のような出力が表示されます。

Hello from Docker

対話型コンテナの実行

コンテナと対話するには、-it フラグ(対話型ターミナル)を使用します。

docker run -it ubuntu bash

これにより、コンテナ内で bash シェルが起動します。これで、事実上コンテナの「内部」に入り、コマンドを実行できます。

いくつかのコマンドを試してください。

ls
cat /etc/os-release

コンテナを終了するには、次のように入力します。

exit

実行中のコンテナのリスト表示

実行中のすべてのコンテナを表示するには、次を使用します。

docker ps

コンテナは完了後すぐに終了するため、出力が表示されない場合があります。停止したコンテナを含むすべてのコンテナを表示するには、次を使用します。

docker ps -a

これにより、すべてのコンテナ、そのステータス、および作成/終了された日時が表示されます。

コンテナのライフサイクル

コンテナにはライフサイクルがあります。

  1. Created: コンテナは作成されましたが、まだ開始されていません。
  2. Running: コンテナは現在実行中です。
  3. Paused: コンテナの実行が一時停止しています。
  4. Stopped: コンテナは終了しましたが、まだ存在しています。
  5. 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 イメージの検索と使用に関する実験を完了したことをおめでとうございます。このチュートリアルを通して、あなたは以下のことを行いました。

  1. Docker のインストールを確認し、Docker イメージの概念を理解しました。
  2. docker search コマンドを使用して Docker イメージを検索する方法を学びました。
  3. docker pull を使用して、Docker イメージをローカルマシンにダウンロードしました。
  4. ローカルの Docker イメージをリスト表示し、検査しました。
  5. さまざまな docker run オプションを使用して、これらのイメージからコンテナを作成し、実行しました。
  6. コンテナのライフサイクルを理解し、コンテナを管理する方法を理解しました。

これらのスキルは、開発プロジェクトで Docker を使用するための基礎となります。これで、Docker イメージを検索、ダウンロード、使用して、アプリケーション用のコンテナ化された環境を作成できます。

Docker の旅の次のステップには、以下が含まれます。

  • Dockerfile を使用して独自の Docker イメージを作成する方法を学ぶ
  • Docker ネットワーキングとデータの永続性を理解する
  • マルチコンテナアプリケーション向けの Docker Compose を探求する
  • Kubernetes を使用したコンテナオーケストレーションに飛び込む

さまざまな Docker イメージを試して、開発ワークフローを加速するために利用できる、事前に構築されたコンテナの広大なエコシステムを発見し続けてください。