Docker Hub へのアカウント登録と オリジナル Docker イメージのプッシュ/プル手順
前回の記事で、 Dockerfile を使い Docker イメージを作成する方法を解説いたしました。
その中では、Dockerfile を使うと1つのコマンドを実行することで、簡単にオリジナル Docker イメージが作成できることを解説しています。
しかし、Dockerfile で Docker イメージを作成しても Docker イメージ内のデータは、また1から登録する必要があります。
それでは、あまりも非効率なので Docker には作成したオリジナル Docker イメージを保存する機能があります。
今回は Dockerfile を使いオリジナル Docker イメージを作成し、さらにその作成した Docker イメージを保存するため Docker Hub への Docker イメージのプッシュする手順とプッシュした Docker イメージを使用する手順を解説いたします。
また、Docker Hub を使用するために必要な Docker Hub へのアカウント登録手順も解説いたします。
なお、使用する環境は WSL 2 + Docker Desktop for Windows となりますが、環境構築手順に関しては割愛いたします。WSL 2 + Docker Desktop for Windows の環境構築手順をご覧になりたい方はこちらをクリックしてください。
また、WSL 2 の環境構築手順に関しても割愛いたします。WSL 2 の環境構築手順をご覧になりたい方はこちらをクリックしてください。
また、WSL 2 や Desktop for Windows などの環境に関しては、 以下の記事で解説していますので、よろしければご覧ください。
アカウント登録
まず、Docker Hub を使用するため、Docker Hub へのアカウント登録手順を解説いたします。
Docker Hub のアカウントが未登録の場合、Docker イメージをプルすることはできますがプッシュができません。
したがって、Docker Hub を使用する前に Docker Hub のアカウント登録をおこないます。
Docker Hub の公式サイトに接続し、[Docker ID]、[Email]、[Password] を、また、製品情報などの通知が必要な場合、Send me occasional product updates and announcements.] にチェックします。
すべての項目の入力が完了したら、reCAPTCHA の [私はロボットではありません] にチェックし、[Sign Up] をクリックします。
次に、[Choose a Plan] にて、プランを選択します。
筆者の場合、Docker Hub は、個人的な検証が目的ですので、Personal Plan を利用します。ですので、[Continue with Free] をクリックしています。
次に、メールアドレスの確認をおこないます。
Docker から登録したアドレスにメールが届きます。
メール本文内の、[Add email address] をクリックします。
以上で、Docker Hub のアカウント登録は完了ですが、必要に応じてプロファイルも更新します。
リポジトリの作成時にも設定しますが、 [Default Repository Privacy] を設定することができます。
なお、docker docs でも説明されている通り、Personal Plan では、プライベートリポジトリは1つだけ生成することができます。
したがって、リポジトリの設定は [Public] のままで OK です。
Docker イメージのプッシュ
Docker Hub へのアカウント登録が完了したら、続いては、オリジナル Docker イメージをプッシュする手順を解説いたします。
なお、リポジトリが作成されていなくても、Docker イメージのプッシュ時に自動的にリポジトリが作成されますが、今回は、あらかじめリポジトリを準備し、そのリポジトリに Docker イメージをプッシュする手順を解説いたします。
リポジトリの作成
まず、Docker Hub からリポジトリを作成します。
Docker Hub の Repositories に接続し、[Create Repository] をクリックします。
また、Create Repository にて、[Name]、[Description] を、また、[Visibility] に、[Public]、もしくは [Private] を選択し、[Create] をクリックします。
リポジトリが作成されました。
なお、リポジトリを削除する場合は、[Settings] より削除することができます。
Docker イメージの作成
続いて、Dockerfile を使って、Docker イメージを作成します。
Dcokerfile を準備し、Docker イメージを作成するため、以下のコマンドを実行します。
docker build -t tamao-test-image .
次に、Docker イメージを確認するため、以下のコマンドを実行します。
docker images
「tamao-test-image」という名前のイメージが作成されました。
Docker イメージのプッシュ
続いて、Docker Hub へ Docker イメージをプッシュします。
Docker Hub へログインするため、以下のコマンドを実行します。
docker login
[Username]、[Password] に、Docker ID とそのパスワードを入力します。
次に、Docker イメージをプッシュする準備として、Docker イメージに名前空間を設定します。そのため、Docker イメージに名前空間を設定するため、以下のコマンドを実行します。
docker tag c48aa09c3eaf tamao/tamao-test-repo:latest
「Docker イメージの作成」で作成したリポジトリ名のままだと、Docker Hub のアカウントと紐付いていないため、Docker イメージをプッシュすることはできません。
次に、Docker イメージをプッシュするため、以下のコマンドを実行します。
docker push tamao/tamao-test-repo:latest
Docker イメージのプッシュが成功しました。
Docker イメージのプッシュが成功すると、Docker Hub のリポジトリに Docker イメージ追加されています。
オリジナル Docker イメージの使用
Docker イメージのプッシュが完了したら、続いては、プッシュした Docker イメージの使用方法を手順を解説いたします。
オリジナル Docker イメージの作成
オリジナル Docker イメージを使用するため、Dockerfile を変更します。また、Docker イメージを作成するため、以下のコマンドを実行します。
docker build -t tamao-customize-image .
次に、Docker イメージを確認するため、以下のコマンドを実行します。
docker images
「tamao-customize-image」という名前のイメージが作成されました。
コンテナの作成
続いて、コンテナを作成し Web サイトの確認をおこないます。
コンテナを作成するため、以下のコマンドを実行します。
docker run -it -d -p 8080:80 --name tamao-customize-container tamao-customize-image
Docker イメージには、「オリジナル Docker イメージの作成」で作成した、Docker イメージ「tamao-customize-image」を指定します。
次に、コンテナを確認するため、以下のコマンドを実行します。
docker ps
「tamao-customize-container」という名前のコンテナが作成されました。
「localhost:8080」にアクセスするします。
Nginx のデフォルトページが正常に表示されました。Web サイトとして機能しています。
まとめ
以上が、Docker Hub へのアカウント登録と Docker イメージのプッシュ、プッシュした Docker イメージの使用方法となります。
いかがでしたでしょうか?
Docker Hub に Web サイトなどオリジナルの環境をまるごとプッシュすることができますの便利な機能だと思います。
例えば、別環境(別の場所、別のパソコンなど)で Web サイト などの構築する際に、Docker イメージをプルするだけの作業ですので、環境構築の費やす作業量を大幅に省くことができます。これって、すごいメリットですね。
実際、同じ手順で構築したつもりでも、作業ミスでハマった経験がある方も多いと思います。
環境構築って手間ですよねー(汗)
著者がアプリケーション開発に携わっていた頃(2012~2013年ごろまで)の話なのですが、アプリケーションの実行環境を構築するために、開発ベンダーにまで足を運んだ経験もあります。
当時、コンテナ型仮想化が今ぐらい発展していれば、コンテナ型仮想化を採用したのですが・・・今ならコンテナ型仮想化を提案すると思います。
はじめは、コンテナ型仮想化も覚えることも多くなかなか慣れませんでしたが Docker に触れるにつれ、とても興味深く面白い技術だと感じました。
最後までお読みいただきありがとうございました。
では。