Docker入門③ -Docker Hub ハンズオン-

Docker入門③ -Docker Hub ハンズオン-

前回は、Docker fileを記述し、その内容からDocker imageを作成し、コンテナを作成した。
今回は、作成したイメージをレジストリサービスであるDocker Hubに展開してみよう。

まずDocker Hubについて、公式サイトから引用し紹介する。

“Docker Hub はクラウド上のレジストリ・サービスであり、アプリケーションやサービス・コンテナの構築と配信を行います。コンテナ化されたイメージを見つけたり、配布したり、変更の管理、ユーザやチームのコラボレーション、開発パイプラインを通したワークフローの自動化といった集約されたリソースを提供します。”

Docker Hub 概要 http://docs.docker.jp/docker-hub/overview.html

クラウドにあるレジストリサービスを利用するため、アカウントを取得する必要があり個人のメールアドレス、パスワードなどを入力する必要がある。
※Docker HUBのアカウント取得方法は以下を参照
https://docs.docker.com/docker-hub/

下記に実際のDocker Hubを示す。
docker-hub-01

次に自分のローカルにあるDockerイメージをDocker Hubに展開する方法を紹介する。
まずコマンドプロンプトでDocker HUBにloginする。
※ login の際には Docker demon socketへのアクセスが必要でpermission denied になるので root 権限に切り替える

$ sudo su –

# docker login
[自分のユーザネーム] と [パスワード] を入力

docker-hub-02

※図の例はすでに、ユーザーネームとパスワードを入力済みになっているため、Docker loginのみの入力でLoginに成功している。
※WARNING にあるように、Docker HUB への password が /root/.docker/config.json にbase64 でデコードできるパスワードが格納されることには注意したい。

自分のDocker HUBにpushするには、作成したイメージにDocker HUBの名前を付ける必要があるので、作成しているイメージにtagコマンドで名前をつける。

$ docker tag <現docker image> <後docker image>
docker-hub-03

<現docker image> docker-whale-test
<後docker image> ***/testtest
(***が自分のDocker HUBにあたる)

docker imagesでtagを確認
docker-hub-04

LocalにあるDocker imagesを自分のDocker HUBにpushする
$ docker push *** /testtest
docker-hub-05

Push完了!!

Docker HUBを確認すると今pushした内容が確認できる。
docker-hub-06

ここまでがDocker イメージを Docker HUB へpushする方法を紹介した。

次はlocalから Docker イメージを削除し、Docker HUBからpushしたイメージを取得してみよう。
まず、Localからイメージ *** /testtestを削除し、docker images を確認する

# docker rmi -f ***/testtest
docker-hub-07

自分のDocker HUBから *** /testtestを pull する。
# docker pull ***/testtest
docker-hub-08

最後に docker イメージを確認し、削除したイメージが復活していることを確認する。
# docker images
docker-hub-09

今回は、Docker HUBを登録し、作成したDockerfileを自分のDocker HUBにpushした。さらに作成したDocker file を削除しDocker HUBからそれをpullし、削除したDocker イメージを確認した。
これまで3回に渡り、Docker イメージをレポジトリから pull したり、自らイメージファイルを作成たり、それをレポジトリに上げたり、と様々な Docker のライフサイクルについて触れてきた。まとめとして、一連の関係性について、図解した絵とコマンドをおさらいする。
docker-hub-10

docker pull imagesの取得
docker run imagesからコンテナの立ち上げ
docker build imagesの自動作成※Dockerfileから自動作成
docker commit imagesの作成※既存コンテナからの修正する
docker tag コンテナへの名前つけ
docker inspect コンテナやImagesの調査
docker push imagesのプッシュ

今後は、複数のコンテナをまとめて管理するDocker Composeやホストマシン、クラウド、仮想環境などにDockerの実行環境をコマンドで作成できるツールである Docker MachineやDockerのクラスタリングをサポートするツールであるDocker Swarmについても触れていきたい。

参考資料
Dockerイメージの理解とコンテナのライフサイクル
https://www.slideshare.net/zembutsu/docker-images-containers-and-lifecycle

Docker公式サイト
http://docs.docker.jp/docker-hub/overview.html