🐥

DockerHubからhello-worldをpullして使ってみよう

2024/03/31に公開

0.はじめに

今回は、「DockerHubからhello-worldをpullしてコンテナを起動する」方法を解説します。

本記事の内容に沿って、ハンズオンいただくと以下を習得できます。

  • DockerHubからDockerimageをpullできるようになる
  • hello-worldを使ってみることで、コンテナを起動させる動作を習得できる

前提として、以下は準備できているものとして解説をしていきます。

  • ✅Linux基礎の理解
  • ✅DockerHubの登録
  • ✅Dockerのインストール

まだご準備できていない方は、以前書いた記事をご覧いただければと思います。
https://zenn.dev/gachigachi/articles/2f28e96cc26774

では、次の章から具体的な解説を進めます!!

1.DockerHubからhello-worldをpullする

この章で、図のようにDockerHubからhello-worldをpullする方法を解説します。

ホストOS上のターミナルを立ち上げて、以下コマンドを実施していきます。

  • $ docker login(DockerHubへログイン)
  • $ docker pull <image>(DockerHubから指定したDockerimageをpullする)
  • $ docker images(ホストOS上に存在するDockerimageを表示する)

では、順番にやっていきましょう!!

1.1.DockerHubへログインする

まずは、DockerHubへログインするために、以下コマンドを実行しましょう。

$ docker login

ユーザー名を聞かれると思うので、DockerHubに登録してあるユーザー名を入力してEnterします。

Username:ここにDockerHubに登録したユーザー名を入力

次に、パスワードを聞かれるので、同じく入力してEnterしましょう。

Password:ここにパスワードを入力

以下のように、ログイン成功が表示されればOKです。

Login Succeeded
$ 

うまくいかない場合、以下を確認してみてください。

  • ホストOS上でDockerが起動しているか
  • DockerHubのユーザー登録が済んでいるか
  • ホストOSがインターネットに接続されているか

DockerHubへ接続できましたら、次の節に進みましょう!!

1.2.hello-worldをpullする

次に、以下コマンドを実行して、hello-worldをpullしてみましょう。

$ docker pull hello-world

すると、以下のようなメッセージが出力されます。「Pulling from library/hello-world」というメッセージから、ちゃんとhello-worldがpullされていることがわかります。

Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:53641cd209a4fecfc68e21a99871ce8c6920b2e7502df0a20671c6fccc73a7c6
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
$

ちなみに、「library/hello-world」はDockerHub上のlibraryを指しており、色々なDockerimageの存在を確認できます。

DockerHub上から「hello-world」で検索すると以下ページへ飛べますので、hello-worldがどんなものなのか興味ある方は確認してみてください。

次の節で、ホストOS上に存在するDockerimageを確認する方法を見ていきます。

1.3.hello-worldがpullされているか確認

念の為、hello-worldがキチンとpullされていることを確認してみましょう。

$ docker images

そうすると、以下のようにホストOS上に存在するDockerimageが表示されます。

REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
hello-world         latest    d2c94e258dcb   11 months ago   13.3kB

REPOSITORYを見ると、hello-worldがpullされていることがわかります。各項目については、以下の通りです。

項目 内容
REPOSITORY リポジトリ名を表示
TAG Dockerimageのバージョン(タグ)を表示
IMAGE ID Dockerimageのハッシュ値を表示
CREATED Dockerimageがいつ作られたかを表示
SIZE Dockerimageのサイズを表示

次の章で、今回pullしたhello-worldをコンテナとして起動してみます。

2.hello-worldのコンテナを起動してみる

前章でpullしてきたhello-worldのDockerimageを使って、実際にコンテナを起動してみます。

具体的には、以下コマンドを実施していきます。

  • $ docker run <image>(hello-worldのコンテナを起動する)
  • $ docker ps(ホストOS上で起動しているコンテナを確認する)

早速、やっていきましょう!!

2.1.hello-worldのコンテナを起動する

以下コマンドを実行して、hello-worldを起動してみましょう。

$ docker run hello-world

すると、以下のようなメッセージが出力され、hello-worldが起動されたことがわかります。

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
$

次の節で、hello-worldのコンテナが起動していることを確認します。

2.2.hello-worldのコンテナが起動していることを確認する

以下コマンドを実行して、ホストOS上で起動しているコンテナを確認してみましょう。

$ docker ps

すると、以下のように何も表示されないと思います。

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$

なぜかと言うと、hello-worldは「Hello from Docker!〜」を表示させるとすぐに停止するコンテナだからです。

なので、起動していないコンテナも含めて表示させるオプショ-aを指定して、再度実行してみましょう。

$ docker ps -a

今度は、以下の通りhellow-worldのコンテナが表示されると思います。

CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS                     PORTS     NAMES
fb4083b35617   hello-world    "/hello"                  8 minutes ago   Exited (0) 8 minutes ago             charming_agnesi

CREATEDとSTATUSという欄を見ると、hello-worldが過去にCREATED(起動)されて、今はExited(停止)されていることがわかります。他の欄については、以下の通りです。

項目 内容
CONTAINER ID コンテナのIDを表示
IMAGE コンテナのイメージ名を表示
COMMAND コンテナ起動時に実行されたコマンドを表示
CREATED コンテナがいつ作られたかを表示
STATUS コンテナのステータスを表示
PORTS コンテナ起動時に指定されたリッスンポートを表示
NAMES コンテナの名前を表示(指定しないと勝手に名前をつけられる)

次の節で、docker runが実際に何をしているのかをもう少し詳しく解説します。

2.3.docker runは何をしているのか?

docker runは以下の通り、Dokckerimageからコンテナを作成しプログラムを実行してからexitしています。

  1. run:docker run実行
  2. create:コンテナを作成
  3. execute:コンテナ内のプログラムを実行
  4. exit:コンテナのexit(停止)

今回docker runしたhello-worldでは以下の通りとなります。

  1. run:docker run実行
  2. create:コンテナを作成
  3. execute:テキスト出力
  4. exit:コンテナのexit(停止)

コンテナは今回のhello-worldのようにプログラムを実行してすぐに停止するものもあれば、ずっと起動しておくコンテナもあり、これはケースバイケースです。

docker runする際は、上記を思い描きながら実行いただくと、実際の動きがイメージしやすいかと思います。

3.おわりに

今回はコンテナの理解を深めるために、hello-worldというコンテナを使って以下を学びました。

  • DockerHubからDockerimageをpullする方法(docker pull
  • コンテナを起動させる方法(docker run

一回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。

次回以降、コンテナをcommitして更新内容をDockerimageにする方法などを解説していきたいと思います。

おわりっ!!

コマンドラインのリファレンス(Docker-docs-ja)

Discussion