DockerHubからhello-worldをpullして使ってみよう
0.はじめに
今回は、「DockerHubからhello-worldをpullしてコンテナを起動する」方法を解説します。
本記事の内容に沿って、ハンズオンいただくと以下を習得できます。
- DockerHubからDockerimageをpullできるようになる
- hello-worldを使ってみることで、コンテナを起動させる動作を習得できる
前提として、以下は準備できているものとして解説をしていきます。
- ✅Linux基礎の理解
- ✅DockerHubの登録
- ✅Dockerのインストール
まだご準備できていない方は、以前書いた記事をご覧いただければと思います。
では、次の章から具体的な解説を進めます!!
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
が実際に何をしているのかをもう少し詳しく解説します。
docker run
は何をしているのか?
2.3.docker run
は以下の通り、Dokckerimageからコンテナを作成しプログラムを実行してからexitしています。
- run:
docker run
実行 - create:コンテナを作成
- execute:コンテナ内のプログラムを実行
- exit:コンテナのexit(停止)
今回docker run
したhello-worldでは以下の通りとなります。
- run:
docker run
実行 - create:コンテナを作成
- execute:テキスト出力
- exit:コンテナのexit(停止)
コンテナは今回のhello-worldのようにプログラムを実行してすぐに停止するものもあれば、ずっと起動しておくコンテナもあり、これはケースバイケースです。
docker run
する際は、上記を思い描きながら実行いただくと、実際の動きがイメージしやすいかと思います。
3.おわりに
今回はコンテナの理解を深めるために、hello-worldというコンテナを使って以下を学びました。
- DockerHubからDockerimageをpullする方法(
docker pull
) - コンテナを起動させる方法(
docker run
)
一回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。
次回以降、コンテナをcommitして更新内容をDockerimageにする方法などを解説していきたいと思います。
おわりっ!!
Discussion