ツヨシのブログ

技術的な事とか日常の事とか徒然なるままに

スポンサーリンク

【Day006】Dockerを使ったKaggle開発環境の構築(その4)::Docker imageをDocker hubにプッシュする

スポンサーリンク

こんにちは、ツヨシです。

平日は仕事で遅くなり、休日は子供の相手でなかなか時間が取れません。他の子育てエンジニアの方はいつ学習してるか不思議です。

なので、自分はゆっくりですがDockerの学習は進んでいます。

前回は"Docker commit"コマンドを使い、Dockerイメージを作成しました。

ginga0118.hatenablog.com

作成したイメージを他の人たちと共有するために、イメージのDocker hubへのプッシュが必要になります。今回はこの作業を行っていきます。

Docker hubへのイメージプッシュまでの手順

Docker imageをDocker hubへプッシュするために、Docker hubにリポジトリが必要になります。リポジトリはDockerのイメージを置く場所になります。

まずはDocker hub上でリポジトリを作成します。リポジトリの作成はDocker hub上で行います。

また、このリポジトリにローカルで作成したイメージをプッシュするためには、ローカルにあるDockerのイメージ名をDocker hub上のリポジトリ名に合わせる必要があります。

これには"Docker tag"コマンドを使用します。ここまでの手順としては次のようになります。

  1. Docker hubに新しいリポジトリを作成する
  2. 作成したDockerイメージをリポジトリに合わせて名前を変更する
  3. 変更したDocker hubへイメージをDocker hubにプッシュする

Docker hubに新しいリポジトリを作成する

今まで、ローカルでubuntuイメージを使って作業をしてきました。

このubuntuイメージは元はDocker hubにあったイメージになります。これをローカルに持ってきて作業をしてきました。このイメージは別の人が作ったイメージになります。

このまま同じリポジトリを指定すると元とした別の人のubuntuイメージを変更して行くことになります。

このため、自分用のリポジトリをDocker hubに作成する必要があります。リポジトリの作成はDocker hub上で行います。

Docker hubにログインして "Create Repository"よりリポジトリの作成をします。

f:id:ginga0118:20200916054928p:plain

リポジトリ名を入れて"Create"ボタンよりリポジトリを作成します。私は"my-first-repo"という名前で作成をしました。

f:id:ginga0118:20200916055138p:plain

公開範囲などの設定は自分に合わせた適当な設定をおこなってください。

"my-first-^repo"というリポジトリがDocker hub上に作成されます。

f:id:ginga0118:20200916055255p:plain

ここまででDocker hub上でのリポジトリの作成になります。次にこの作成したリポジトリに合わせてDockerイメージ名を変更します。

作成したDockerイメージをリポジトリに合わせて名前の変更をする

使用しているイメージ名はDocker hubで使用しているリポジトリ名にもなります。今使用しているイメージ名はタグを含めて”ubuntu:new”となっています。 つまり、このままプッシュすると"ubuntu"のリポジトリに対してイメージをプッシュすることになります。

このため、まずイメージ名を変更します。そして、自分のイメージを適切なリポジトリに置けるようにします。 イメージ名を変更するためには以下のような"docker tag"コマンドを使用します。

$ docker tag <source> <destination>

それぞれのパラメータは以下のような内容を入れます。

  • source: IMAGE[:TAG]を入れます

  • destination: [REGISTRYHOST/][USERNAME/]NAME[:TAG]を入れます

今回プッシュする元となるイメージはubuntu:newを使用します。"docker images"のコマンドでイメージ名とタグ名が確認できるので現在の状態を確認をします。 f:id:ginga0118:20200917081333p:plain

イメージ名がubuntuでタグがnewのものがあります。これを適切な名前に変更します。

私の場合Docker hubでのアカウントが"ginga0118"なので、次のようなコマンドを行いイメージ名を"my-first-repo"に変更します。

$ docker tag ubuntu:new ginga0118/my-first-repo

f:id:ginga0118:20200916073021p:plain

イメージIDは先ほどのものと同じですが、名前とタグが"my-first-repo"と"new"に変更されたイメージが作成されました。このイメージをDocker hubへイメージをプッシュします。

Docker hubへイメージをプッシュする

変更したイメージをDocker hubにプッシュします。プッシュするためのコマンドは次のようになります。

$ docker push <image>

にはイメージ名を入れます。先ほど作成したイメージの"ginga0118/my-first-repo"をDocker hubへプッシュします。プッシュコマンドを実行したものが次のものになります。

f:id:ginga0118:20200916073900p:plain

ログを見るといくつかのイメージがプッシュされています。 他のイメージはDocker hub上にすでに存在するので、そのイメージはプッシュされません。

このようにして同一のイメージをプッシュせずに共通の物を使うことで、容量の節約を行っています。

まとめ

今回は以下のコマンドを使用してDockerイメージを作成してDocker hubにプッシュしました。

$ docker tag <source> <destination>
$ docker push <image>

このようにDocker hubにイメージを置くことで、他の人がイメージを使うことが出来ます。

次回はプッシュしたイメージを自分が使っているホストに持ってくることをやっていきたいと思います。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門