code & booze

自己学習とは無縁なSIer業界に身を置くエンジニアがアウトプットします

DockerでHello World

docker logo


前回の続き。
実際にDockerコンテナイメージからコンテナを作成・起動してみる。

Hello-Worldコンテナ

コンテナイメージをpullする

コンテナは元となるコンテナイメージから作成されます。ですが最初は当然のことながら、コンテナイメージはローカルPC上には存在しません。

そのため、イメージをどこかから取得してくるか自前でイメージを作成しなければなりません。
今回はイメージをローカルPC上にpullして、そのイメージからコンテナを起動してみます。

さっそくですが、次のコマンドを実行してみてください。

$ docker image pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

色々出力されますが、Pull completeの文字があります。これでhello-worldというコンテナイメージをpull出来ました。

実際にイメージが存在するかイメージ一覧を出力するコマンドで確認してみます。

$ docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
hello-world                  latest              fce289e99eb9        2 months ago        1.84kB

ありますね!

では次はこのイメージからコンテナを作成・起動してみます。
と、その前にコンテナがまだひとつも存在していないかだけ確認しておきます。

$ docker container ls -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                      PORTS               NAMES

docker container lsコマンドでコンテナ一覧を出力できます。オプションを付けないと起動中のコンテナのみ出力しますが、-aオプションを付けることですべてのコンテナを出力できます。 ひとつもコンテナが存在しないことを確認できました。

コンテナを起動する

ではいよいよイメージからコンテナを起動してみます。次のコマンドを実行してみてください。

$ docker container run hello-world

f:id:kiy-s:20190305232958p:plain

"Hello from Docker!(Dockerからこんにちは!)"

無事起動できました!

このコンテナはデフォルトでは上記の文を表示するだけなので、これが何の役にたつの??と思うかもしれません。

でもこれはこれで十分なのです。hello-world container なのですから。

ここまで確認できれば、あとはどんなイメージもpullしてコンテナを作ることができます。

…念のため、コンテナが作成されているかさきほどのコンテナ一覧を出力するコマンドで確認してみます。

$ docker container ls -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                      PORTS               NAMES
6e7801d2cb42        hello-world              "/hello"                 3 minutes ago       Exited (0) 3 minutes ago                        elegant_pike

ちゃんとコンテナがひとつできていますね!

docker container run

ここまで、pullrunの順にコマンド実行して確認をしましたが、docker container run ~コマンドは、ローカルにイメージが存在しない状態で実行すると、イメージのpullから処理がされます。

コンテナの起動まで一気に行いたい場合は、docker container run ~を使うと良いです。

Docker Hub

ここまでコンテナイメージをpullしてコンテナを実行しましたが、コンテナイメージはDocker Hubという、公式のコンテナイメージの保管レジストリサービス上のリポジトリから取得しています。

f:id:kiy-s:20190306002523p:plain
Docke Hub

Hello-Worldイメージの場合はコチラリポジトリです。

Docker Hubには個人・公式問わず様々なイメージリポジトリがあり、privateのリポジトリでなければ好きにイメージをpullすることが可能です。

公式のコンテナイメージリポジトリには、ubuntuCentOS等のLinuxディストリビューションから、MySQLjenkins等の様々なソフトウェアがコンテナイメージとして配布されています。

イメージをpullするだけであればアカウント登録は不要ですが、アカウント登録することによりDocker Hubにリポジトリを作成することができます。

リポジトリにはコンテナイメージを保管することが可能です。
なので、Docker Hubにアカウントを作っておくことをおススメします(もちろん無料!)⇒登録画面

おわりに

今回は実際にDocker Hubのリポジトリからコンテナイメージをpullしてコンテナを起動しました。

Docker Hubは、見ていただくとわかるかと思いますが、既存の様々なソフトウェアがコンテナ化されています。

コンテナを使えばすぐにそれらのソフトウェアを使うことができるので色々試してみるのが良いと思います。
(不要になったり、問題があったとしてもコンテナを削除するだけなのでローカルの環境を汚しません!)

最後に、Dockerコマンドのドキュメントのリンクしておきます。

docker | Docker Documentation