はじめに
Docker は、アプリケーションの開発、デプロイ、管理の方法に革命をもたらしました。このエコシステムの中心にあるのは Docker イメージであり、コンテナ化されたアプリケーションを作成し実行するための構成要素として機能します。このチュートリアルでは、Docker イメージをレジストリからプルするプロセスを案内します。これは、プロジェクトで Docker の力を活用するための重要なステップです。
この実験(Lab)の終わりには、Docker イメージを検索し、Docker Hub からプルし、コンテナ化されたアプリケーションでそれらを使用する方法を理解できるようになります。
Docker イメージの理解
Docker イメージをプルする前に、Docker イメージとは何か、そしてどのように機能するのかを理解することが重要です。
Docker イメージとは?
Docker イメージは、アプリケーションを実行するために必要なすべてを含む、軽量でスタンドアロンのパッケージです。
- アプリケーションコード
- ランタイム環境
- ライブラリと依存関係
- 環境変数
- 設定ファイル
イメージは、これらのイメージの実行インスタンスである Docker コンテナを作成するために使用されるテンプレートです。
Docker イメージリポジトリ
Docker イメージは、レジストリ内のリポジトリに保存されます。最も人気のあるパブリックレジストリは Docker Hub で、数千のすぐに使えるイメージをホストしています。Docker Hub に関するいくつかの重要なポイント:
- ソフトウェアベンダーによってメンテナンスされている公式イメージが含まれています
- ユーザーによって作成されたコミュニティ貢献イメージをホストしています
- 組織が独自のイメージ用のプライベートリポジトリを持つことを許可しています
Docker イメージの命名
Docker イメージは、特定の命名規則に従います。
[registry/]username/repository:tag
ここで:
registryはレジストリのホスト名です (オプション、デフォルトは Docker Hub)usernameは Docker Hub のユーザー名または組織名ですrepositoryはイメージ名ですtagはイメージのバージョンです (オプション、デフォルトは "latest")
例:ubuntu:22.04 または nginx:latest
Docker インストールの確認
先に進む前に、Docker がシステムに正しくインストールされていることを確認しましょう。ターミナルを開き、以下を実行します。
docker --version
次のような出力が表示されるはずです。
Docker version 20.10.21, build baeda1f
これにより、Docker がインストールされ、使用できる状態であることが確認されます。
次のステップでは、最初の Docker イメージを検索してプルします。
最初の Docker イメージの検索とプル
Docker イメージが何かを理解したので、Docker Hub からそれらを見つけてプルする方法を学びましょう。
Docker イメージの検索
イメージをプルする前に、利用可能なオプションを検索したい場合があります。docker search コマンドを使用して、Docker Hub でイメージを検索します。
docker search ubuntu
これにより、Docker Hub で利用可能な Ubuntu 関連のイメージのリストが表示されます。次のような出力が表示されるはずです。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating s... 14938 [OK]
ubuntu-upstart Upstart is an event-based replacement for ... 111 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 256 [OK]
...
OFFICIAL 列に [OK] とマークされているのは、Docker またはソフトウェアベンダーによってメンテナンスされているイメージを示しています。
Docker イメージのプル
Docker イメージをローカルマシンにダウンロードするには、docker pull コマンドの後にイメージ名を指定します。
docker pull ubuntu:22.04
このコマンドは、Ubuntu 22.04 イメージを Docker Hub からプルします。次のようなダウンロードの進行状況が表示されるはずです。
22.04: Pulling from library/ubuntu
2ab09b027e7f: Pull complete
Digest: sha256:2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04
出力は、Docker がイメージの個々のレイヤーをダウンロードしていることを示しています。各レイヤーは、ファイルシステム変更のセットを表しています。
タグなしでのイメージのプル
タグを指定しない場合、Docker は latest タグが付いたイメージをプルします。
docker pull nginx
これにより、Nginx Web サーバーイメージの最新バージョンがプルされます。
Using default tag: latest
latest: Pulling from library/nginx
a603fa5e3b41: Pull complete
(...more layers...)
Digest: sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
その他のレジストリからのプル
デフォルトでは、docker pull は Docker Hub からイメージをダウンロードします。他のレジストリからプルするには、レジストリのホスト名を含めます。
docker pull mcr.microsoft.com/dotnet/sdk:6.0
このコマンドは、.NET SDK 6.0 イメージを Microsoft Container Registry からプルします。
これでいくつかの Docker イメージをプルしたので、次のステップに進み、それらを管理する方法を学びましょう。
Docker イメージの管理
Docker イメージをプルした後、それらを効果的にリスト表示、検査、および管理する方法を知る必要があります。
Docker イメージのリスト表示
ローカルマシンにダウンロードしたすべての Docker イメージを表示するには、docker images コマンド (またはそのエイリアス docker image ls) を使用します。
docker images
次のような出力が表示されるはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 58db3edaf2be 3 weeks ago 77.8MB
nginx latest 605c77e624dd 4 weeks ago 142MB
この出力は以下を示しています。
REPOSITORY: イメージの名前TAG: イメージのバージョンIMAGE ID: イメージの一意の識別子CREATED: イメージが作成された日時SIZE: ディスク上のイメージのサイズ
Docker イメージの検査
特定のイメージに関する詳細情報を取得するには、docker inspect コマンドを使用します。
docker inspect ubuntu:22.04
このコマンドは、イメージに関するすべての詳細を含む JSON 配列を表示します。これには以下が含まれます。
- レイヤー情報
- 環境変数
- アーキテクチャ
- オペレーティングシステム
- 設定
出力は非常に長く、詳細です。以下は、表示される可能性のあるスニペットです。
[
{
"Id": "sha256:58db3edaf2beXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"RepoTags": [
"ubuntu:22.04"
],
"RepoDigests": [
"ubuntu@sha256:2b7412e6465c3fc7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f"
],
...
}
]
イメージ履歴
イメージのレイヤー履歴 (どのように構築されたか) を表示するには、docker history コマンドを使用します。
docker history ubuntu:22.04
出力は、イメージを構成する各レイヤーを示しています。
IMAGE CREATED CREATED BY SIZE
58db3edaf2be 3 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:15efc167a417... 77.8MB
Docker イメージの削除
イメージが不要になった場合は、docker rmi コマンドを使用して削除し、ディスク容量を解放できます。
docker rmi nginx
成功した場合、Docker は削除されたイメージ ID を表示します。
Untagged: nginx:latest
Untagged: nginx@sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Deleted: sha256:605c77e624ddb75e6110f997c58876bba43f0blindividualayeridshereXX
(...more layers deleted...)
イメージがコンテナで使用されている場合は、最初にコンテナを削除するか、-f (force) オプションを使用する必要があります。
docker rmi -f nginx
これで、Docker イメージを管理する方法がわかりました。実際にイメージを使用してコンテナを実行する最終ステップに進みましょう。
Docker イメージの使用
Docker イメージのプルは最初のステップにすぎません。次に、これらのイメージを使用してコンテナを実行する方法を学びましょう。
イメージからのコンテナの実行
イメージからコンテナを作成して起動するには、docker run コマンドを使用します。
docker run ubuntu:22.04 echo "Hello from Ubuntu container"
このコマンドは以下を行います。
ubuntu:22.04イメージから新しいコンテナを作成します。- コンテナ内で
echo "Hello from Ubuntu container"コマンドを実行します。 - 出力を表示します。
Hello from Ubuntu container
コマンドを実行した後、コンテナはタスクを完了したため停止します。
対話型コンテナの実行
コンテナ内で対話型シェルを起動するには、-i (interactive) および -t (terminal) オプションを使用します。
docker run -it ubuntu:22.04 bash
これにより、Ubuntu コンテナ内で bash シェルが提供され、そこでコマンドを実行できます。
root@a1b2c3d4e5f6:/## ls
bin dev home lib32 libx32 mnt proc run srv tmp var
boot etc lib lib64 media opt root sbin sys usr
コンテナを終了するには、exit と入力するか、Ctrl+D を押します。
root@a1b2c3d4e5f6:/## exit
exit
デタッチモードでのコンテナの実行
バックグラウンド (デタッチモード) でコンテナを実行するには、-d オプションを使用します。
docker run -d --name nginx-server -p 8080:80 nginx
このコマンドは以下を行います。
nginxイメージからnginx-serverという名前のコンテナを作成します。- デタッチモード (
-d) で実行します。 - ホストのポート 8080 をコンテナのポート 80 にマッピングします。
- コンテナ ID を返します。
e1d0ac1dcb21a93d9d878dcf40c054eb9f3c2b1bf5ecce7c29b6fa8ce6b219c1
実行中のコンテナへのアクセス
これで、ブラウザで http://localhost:8080 にある Nginx Web サーバーにアクセスしたり、curl を使用して動作を確認したりできます。
curl localhost:8080
これにより、Nginx のウェルカムページ HTML が表示されます。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>
実行中のコンテナのリスト表示
実行中のすべてのコンテナを表示するには、次を使用します。
docker ps
これにより、実行中のコンテナに関する情報が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1d0ac1dcb21 nginx "/docker-entrypoint.…" 30 seconds ago Up 29 seconds 0.0.0.0:8080->80/tcp nginx-server
コンテナの停止と削除
実行中のコンテナを停止するには、次を使用します。
docker stop nginx-server
停止したコンテナを削除するには、次を使用します。
docker rm nginx-server
これで、Docker イメージを使用してコンテナを正常に実行できました。これは、開発およびデプロイプロセスで Docker を使用するための基本的なワークフローです。
まとめ
この Docker イメージの実験を完了したことをおめでとうございます。Docker イメージを操作するための基本的なスキルを習得しました。
- Docker イメージとは何か、レジストリでの組織方法の理解
- Docker Hub からの Docker イメージの検索とプル
- ローカル Docker イメージの管理 (リスト表示、検査、削除など)
- さまざまなモードでのコンテナ実行への Docker イメージの使用
これらのスキルは、Docker を操作するための基盤を形成し、開発ワークフローでコンテナ化を活用できるようにします。これで、パブリックまたはプライベートレジストリから任意の Docker イメージをプルし、それらを使用してコンテナ化されたアプリケーションを実行できます。
さらなる学習のための次のステップ:
- Dockerfile を使用した独自の Docker イメージの作成
- マルチコンテナアプリケーションのための Docker Compose の使用
- 永続ストレージのための Docker ボリュームの使用
- コンテナネットワークの設定
Docker Hub で利用可能な Docker イメージの広大なエコシステムを引き続き探索して、開発プロセスを加速できるツールとアプリケーションを見つけてください。



