Dockerイメージを保存・共有する場所のことをDockerレジストリといい、Docker公式のDockerレジストリとして、よく使われているのが「Docker Hub」となる。
今回は、「Docker Hub」にアカウント作成し、ローカル環境で作成済のDockerイメージを保存してみたので、その手順を共有する。
前提条件
ローカル環境に、以下の記事で作成済のDockerイメージがあること。
やってみたこと
Docker Hubアカウントの作成
Docker Hubアカウントの作成は、Docker HubにSign up(アカウント作成)することで行える。その手順は、以下の通り。
1) Docker Desktop上で「Sign in」ボタンを押下する。
3) Eメール・ユーザ名・パスワードを設定し、「Sign up」ボタンを押下する。
4) 以下のような画面が表示された場合は、画面上での指示に従う。
5) Sign in画面が表示されるため、ユーザ名またはメールアドレスを入力し「Continue」ボタンを押下する。
6) パスワードを入力し「Continue」ボタンを押下する。
7) 以下の画面が表示されるため、「開く」ボタンを押下する。
8) Docker Desktopで、以下のように、サインインの完了が確認できる。
Docker HubへのDockerイメージの保存
先ほどSign upしたDocker Hubに、Dockerイメージを保存するには、docker pushコマンドを利用する。その手順は、以下の通り。
1) 以下のように、Dockerイメージが作成されているものとする。
2) Docker HubにDockerイメージを保存できるようにするため、「docker tag (DockerイメージID) (Docker Hubユーザー名)/(Dockerイメージ名):(バージョン)」コマンドを実行する。
なお、docker tagコマンドの詳細は、以下のサイトを参照のこと。
https://docs.docker.jp/linux/step_six.html
3) Docker HubにDockerイメージを保存するため、「docker login -u (Docker Hubユーザー名)」コマンドを実行する。その後、パスワードを入力しログインする。
4)「docker push (Docker Hubユーザー名)/(Dockerイメージ名):(バージョン)」コマンドを実行し、Docker HubにDockerイメージを保存する。
5) 保存されたDockerイメージを確認するため、Docker Hubにログインする。「https://hub.docker.com/」にアクセスし、「Sign In」ボタンを押下する。
6) ユーザー名を入力し、「Sign in」ボタンを押下する。
7) パスワードを入力し、「Continue」ボタンを押下する。
8) 以下のように、Docker Hub上で、先ほど保存したDockerイメージが表示されるのが確認できる。
Docker Hubに保存したDockerイメージの取得
Docker Hubに保存したDockerイメージを取得し、Dockerコンテナを実行する手順は、以下の通り。
1)「docker image prune -a」コマンドを実行し、Dockerイメージを削除する。
「docker image prune -a」コマンド実行後の、Docker Desktop上の表示は、以下の通り。
2)「docker pull (Docker Hubユーザー名)/(Dockerイメージ名):(バージョン)」コマンドを実行し、Docker HubからDockerイメージを取得する。
3) Dockerイメージ取得後に確認した結果は、以下の通り。
4)「docker container run -it -d (Docker Hubユーザー名)/(Dockerイメージ名):(バージョン)」コマンドを実行し、指定したDockerイメージからDockerコンテナを起動する。
5)「docker exec -it (コンテナID) /bin/bash」コマンドを実行すると、起動したDockerコンテナにログインできる。
6) 起動したDockerコンテナ内で、Pythonプログラム「decision_tree_sample.py」を実行すると、プログラムが正常終了し、画像ファイル「decision_tree_graph.png」が出力されることが確認できる。
7) exitコマンドを実行すると、以下のように、起動したDockerコンテナからログアウトできる。
要点まとめ
- 「Docker Hub」にアカウント作成すると、ローカル環境で作成済のDockerイメージを保存することができる。