今回はコンテナで編集したDockerイメージをDockerHubにプッシュし、別のホストでもそのDockerイメージが使えるようにするところまでをみていきます。この記事は基本的なDockerコマンド⑴からの続きとなります。
今回扱う範囲

コンテナ内のイメージにファイルを作成する
まずはubuntuイメージがあるコンテナを起動させます。
その中にリダイレクトで「Hello Docker」と書かれたtestファイルを作成しておきます。
※コンテナIDはご自身のIDを使用してください($docker ps -a)

画像の通りubuntu内に「Hello Docker」と書かれたtestファイルが作成されました。
コンテナをcommitして更新したubuntuイメージをホストOSに作成する
次にコンテナで更新したubuntuイメージをcommitし、ホストOSに新たにubuntuイメージを作成していきます。commitはホストOS上で行うので、コンテナから出て止めておきましょう。
$ exit
$ docker stop 8bb7bc1de690

ではcommitします。

ーコマンド公式ー
docker commit <ContainerID> <new image name>:<tag name>
※ホストOSで実行すること
※tag name はとりあえずimageについているタグ名と覚えておきましょう。
$ docker commit 8bb7bc1de690 new_ubuntu:updated

これでホストOSにコンテナで更新したnew_ubuntuイメージを新たに作成することができました。
Docker ImageをDockerHubにプッシュする
では次にホストOSに作成したnew_ubuntuイメージ(Docker Image)をDockerHubにプッシュしていきます。前提としてDockerHubにリポジトリを作成しているかを確認してください。まだの方はこちらから
※今回のDockerHubのリポジトリ名は 「個人のDocker ID / my-docker」 としています。
※個人のDocker ID→DockerHubでアカウント作成した際のDocker IDです。
※これから先に出てくる「Docker ID」はご自身のDockerHubのDocker IDを指します。

ここでDockerHubにプッシュする前に一つ行っておくことがあります。
それはホストOSのDockerイメージの名前をDockerHubのリポジトリ名に合わせておくことです。
<現状の確認>
ホストOSの
Dockerイメージ→new_ubuntu

DockerHub
DockerHubのリポジトリ名 → 各個人のDocker ID / my-docker

つまり、下の画像のようにしておきます。

異なる場合には以下のdockerコマンドでホストOSのDockerイメージを変更しておく。
ーコマンド公式ー
$ docker tag <hostImageName:hostTag> <dokcerHubRepositoryName>
$ docker tag new_ubuntu:updated Docker ID/my-docker

画像を見ていただけると分かりますが、docker tagコマンドでは元のDockerイメージをもとに別の名前のDockerイメージをもうひとつ作成するという点を押さえておきましょう。IMAGE ID が同じということがその証拠です。
ホストOSのDockerイメージとDockerHubのリポジトリ名を一致させたのでプッシュを行います。
ーコマンド公式ー
$ docker push <hostImageName>
$ docker push Docker ID/my-docker

これでホストOSからDockerHubにプッシュすることができました。
一応、DockerHubの方も確認しておきましょう。

DockerHubにプッシュしたイメージをプルする
ではDockerHubにプッシュしたDockerイメージをプルします。
※今回は同じホストOSにプルしますので、先ほどプッシュしたホストOSのDockerイメージを削除した状態にしております。
ー公式ー
$ docker pull <imageName>
$ docker pull Docker ID/my-docker

これでDockerHubのイメージをホストOSに持ってくることができました。
Dockerイメージの確認
では最後にプルしたDockerイメージでコンテナを作成し、その中に「Hello Docker」と書かれたtestファイルが作成されているか確認します。
$ docker run -it Docker ID/my-docker bash

無事、testファイルがあり、その中に「Hello World」と書かれていることが確認できました。
今回は少しボリュームがありましたが、チームでDockerを使用する際の基本になってくると思いますので、しっかりと理解できるように押さえておきましょう。
以下のリンクではudemyで5000人以上(2021年7月現在)の方が視聴している動画講座となります。
udemyのDocker講座の中で最も高評価の学習動画です。丁寧な解説なので初めての方でも安心して進めていけると思います。私もこれで学びました。気になる方はまずはコースのプレビュー(無料)からみてみてください。
コメント