Memo

メモ > サーバ > 各論: Docker > イメージを Docker Hub に保存

■イメージを Docker Hub に保存
Docker Hub は、Docker社が管理する公開レジストリ ■Docker Hubに登録 https://hub.docker.com/ にアクセスし、以下を登録 (Docker IDにハイフンは使えなかった) Docker ID: refirio Email: refirio@example.com Password: ********** 「Choose a Plan」画面になるので、「Continue with Free」をクリック 「Please verify your email address」画面になるので、メールを確認して認証する 認証後、Docker Hubにログインできることを確認する Docker Hub Container Image Library | App Containerization https://hub.docker.com/ Docker Hub にイメージを保管する - Docker-docs-ja 1.9.0b ドキュメント https://docs.docker.jp/engine/userguide/dockerrepos.html 【docker】DockerHubへの登録 - 自由気ままに書いちゃおう https://www.guri2o1667.work/entry/2020/11/02/%E3%80%90docker%E3%80%91DockerHub%E3%81%B8%E3%81%AE%E7%... ■リポジトリの作成 Repositories → Create Repository にアクセスし、以下でリポジトリを作成 Name: test Description: (空欄) Visibility: Public 以下にリポジトリが作成された https://hub.docker.com/repository/docker/refirio/test リポジトリ作成直後は、「Last pushed」が「never」となっている ■イメージを作成 ローカル環境でイメージを作成 「php:8.1-apache」をもとに、追加でファイルを作成するだけのイメージを作成する docker\php_create_file\Dockerfile … Dockerfileを作成
FROM php:8.1-apache RUN touch /root/test1.txt
$ docker image build -t php:create_file docker/php_create_file … Dockerfileをもとに、新しいイメージをビルド $ docker image ls … 作成されたイメージを確認 $ docker container run --name php_create_file -v $PWD/docker/php_create_file/code:/var/www/html -p 80:80 -d php:create_file … 作成したイメージから起動 $ docker container exec -it php_create_file bash … phpコンテナのターミナルに接続 # ls /root … テストファイルを確認する
確認できたら、起動したコンテナは終了しておく
$ docker container ls $ docker container rm -f aac2e02145eb
■イメージを登録 ローカル環境でDocker Hubにログイン
$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: refirio Password: WARNING! Your password will be stored unencrypted in /home/refirio/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
※ログイン情報は /home/refirio/.docker/config.json に保存されるみたい 暗号化されていないらしいが、生のままというわけでも無い ログアウトすると削除されるみたい いきなりプッシュしようとしても、以下のようなエラーになる
$ docker image push refirio/php_create_file:0.1 The push refers to repository [docker.io/refirio/php_create_file] An image does not exist locally with the tag: refirio/php_create_file
プッシュしたいイメージを確認し、まずはタグ(別名)をつける 別名は「ユーザ名/イメージ名:タグ名」とする。タグ名は通常はバージョン情報を指定する
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE php create_file 2f5eeeeb3991 15 minutes ago 414MB $ docker image tag php:create_file refirio/test:0.1 $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE php create_file 2f5eeeeb3991 20 minutes ago 414MB refirio/test 0.1 2f5eeeeb3991 20 minutes ago 414MB $ docker image push refirio/test:0.1 The push refers to repository [docker.io/refirio/test] 682dac57ee22: Pushed e91015d98cd4: Pushed a8ada76173c3: Mounted from library/php 46a0f0111934: Mounted from library/php d6da32e9bff2: Mounted from library/php 400f5ced50ab: Mounted from library/php 7485c1ee99c3: Mounted from library/php b98c6acdec28: Mounted from library/php 86b5e34374f3: Mounted from library/php c52f69d9a297: Mounted from library/php c24f05541085: Mounted from library/php 82f581b09510: Mounted from library/php 3b7e206db54c: Mounted from library/php 575b147c7c31: Mounted from library/php 814bff734324: Mounted from library/php 0.1: digest: sha256:4ff22738d7b3a4fc343fb9d498f9c9e2d7d4d3f10086855f1db2daee8e957d80 size: 3449
以下などで確認すると、「Last pushed」が「2 minutes ago」などとなっている https://hub.docker.com/repository/docker/refirio/test https://hub.docker.com/r/refirio/test Docker Hubからログアウト
$ docker logout
■イメージを利用 Docker Hubからの取得を確認できるようにするため、 「イメージを登録」でタグ付けしたイメージを以下で削除しておく
$ docker image ls $ docker image rm refirio/test:0.1
イメージを再取得
$ docker container run --name dockerhub_test -v $PWD/docker/php_create_file/code:/var/www/html -p 80:80 -d refirio/test:0.1 … プッシュしたイメージから起動 $ docker container exec -it dockerhub_test bash phpコンテナのターミナルに接続 # ls /root … テストファイルを確認する
確認できたら、起動したコンテナは終了しておく
$ docker container ls $ docker container rm -f 6d668f84cbad
■削除 以下からタグごとにイメージを削除できる https://hub.docker.com/repository/docker/refirio/test/tags ■制限 Docker HubからのPullには回数制限が設けられているので注意 制限は徐々に強化されているみたい? Docker HubのPull回数制限はすでに始まっている - Qiita https://qiita.com/zizi4n5/items/7b9676aa2cfc9c5679ae Docker Hub の pull 回数制限について - Qiita https://qiita.com/zettaittenani/items/8693c600b24baa426fa7 仕事用にプライベートリポジトリを作成するなら、今はAWSのECRを使う方がいいかも ECRを検証した時の内容は、AWS.txt の「Amazon Elastic Container Registry(Amazon ECR)」を参照 [速報]AWS、Docker Hubの代替を狙う「Amazon Elastic Container Registry Public」提供開始。AWS re:Invent 2020 − Publickey https://www.publickey1.jp/blog/20/awsdocker_hubamazon_elastic_container_registry_publicaws_reinvent_...

Advertisement