OrbStackというフレームワークを使い回しております。
https://qiita.com/naiveprince0507/items/090bb79cc85eea2d230f
その過程で、表題の件も含めて、色々と躓いたので、纏めておきます。
1
例えば、ローカルマシン環境で、Dockerイメージを作成して、それを他人に共有する際にどうするか? と言うだけの話なんだけど、色々と調べました。
私のMac PC環境では、以下の場所に、Imageが保存されます。
~/Library/Containers/com.docker.docker/Data/vms/0/
(参考) https://qiita.com/amuyikam/items/938781ff5898e654fd7c
ただ、ISOイメージみたいな単一ファイルで保存される訳ではなく、隠しファイルも含めた複数ファイルで構成されているので、簡単に、「Dockerイメージをメール転送しますね。」とか「ファイルサーバにアップしておきますね。」とは出来ないと理解してます。
2
そんな訳で、Docker Hubの登場です。
https://hub.docker.com/
Docker Hubと言う名前が秀逸。(ネットワークレイヤーで使うHubと言う名称は非常に分かりやすい。)
例えば、他人と共有する際は、自分でDocker Hubにアップして、そのリンクを相手にメールして、その相手がDocker Hubにアクセスして、DLすると言うイメージになります。
3
下記では、実際にやってみます。
<気を付ける点>
Docker Hubに登録してあるユーザー名に、Docker Imageの名前を変えないと、HubにPushできません。
例えば、aplpineと言う、DockerイメージをHubにアップしたいとします。
User_A@User_A-mac Downloads % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest d74e625d9115 6 weeks ago 7.46MB
普通に、下記の様にやると、エラーになります。
% docker push alpine:latest
denied: requested access to the resource is denied
🔳 手順1
原因は、下記サイトに書いている通りですが、Dockerイメージの名前を、Docker Hubのユーザー名に合わせる必要があります。
docker pushができないときの対処方法【M1 Mac Apple silicon】
https://hitori-sekai.com/tool/error-dokcerpush/
つまり、準備として、一旦、"alpine:latest" を、"Docker Hubユーザー名/apline"みたいに変更する必要があります。
ここでは、Docker Hubユーザー名は、"dockerhub_usrX"としております。
docker image tag alpine:latest dockerhub_usrX/alpine
ローカルで、この準備が終了した上で、もう一回、Imagesを見てみましょう!
User_A@User_A-mac Downloads % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest d74e625d9115 6 weeks ago 7.46MB
dockerhub_usrX/alpine latest d74e625d9115 6 weeks ago 7.46MB
この様に、dockerhub_usrX/alpineでイメージが作成されていることが確認できます。
🔳 手順2
Docker Hubにログインする。
User_A@User_A-mac ~ % docker login -u dockerhub_usrX
Password:
Login Succeeded
🔳手順3
Pushする。
User_A@User_A-mac ~ % docker push dockerhub_usrX/alpine
The push refers to repository [docker.io/dockerhub_usrX/debian]
7806df21f4c4: Mounted from dockerhub_usrX/alpine
latest: digest: sha256:97f195aa3c20b62ad004df27fd89cc771048317565c58da819a24705d74042 size: 529
と言うわけで成功です!
尚、別のマシンから、DLするには、下記の様にpullします。
User_A@User_A-mac java_code % docker pull dockerhub_usrX/alpine
Using default tag: latest
latest: Pulling from dockerhub_usrX/alpine
Digest: sha256:97f195aa3c20b62ad004df27fd89cc771048317565c58da819a24705d74042 size: 529
Status: Downloaded newer image for dockerhub_usrX/alpine:latest
```