メモ > サーバ > 各論: Docker > イメージを Docker Hub に保存(イメージの更新とlatestタグの指定)
イメージを Docker Hub に保存(イメージの更新とlatestタグの指定)
■latestタグについて
以下で「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
以下のようにタグを指定せずに起動しようとすると、
「refirio/test:latest」を取得しようとして、かつ「そんなイメージは無い」というエラーになる
$ docker container run --name dockerhub_test -v $PWD/docker/php_create_file/code:/var/www/html -p 80:80 -d refirio/test
Unable to find image 'refirio/test:latest' locally
docker: Error response from daemon: manifest for refirio/test:latest not found: manifest unknown: manifest unknown.
See 'docker container run --help'.
手動で「latest」というタグを付与してプッシュしておくことにより、
タグを指定しなかった場合に取得されるイメージを指定できる
■latestタグの付与
以下でlatestタグを付与する
$ docker image tag refirio/test:0.1 refirio/test:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
refirio/test latest 780c832a5fcc 39 minutes ago 414MB
refirio/test 0.2 780c832a5fcc 39 minutes ago 414MB
そのままプッシュしてみる
$ docker image push refirio/test:latest
以下で確認すると、「0.1」と「latest」のタグを確認できた
https://hub.docker.com/r/refirio/test/tags?page=1&ordering=last_updated
以下でlatestタグの付いた refirio/test を削除できる
$ docker image rm refirio/test
以下で refirio/test:latest を取得できる(latest を明示的に指定しても同じ)
$ docker container run --name dockerhub_test -v $PWD/docker/php_create_file/code:/var/www/html -p 80:80 -d refirio/test
■latestタグの更新
Dockerfile を以下のように編集
FROM php:8.1-apache
RUN touch /root/test1.txt
RUN touch /root/test2.txt
イメージをビルド
$ docker image build -t php:create_file docker/php_create_file
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
php create_file 780c832a5fcc 5 seconds ago 414MB
refirio/test latest 2f5eeeeb3991 26 hours ago 414MB
タグ付けしてプッシュ
$ docker image tag php:create_file refirio/test:0.2
$ docker image push refirio/test:0.2
この状態で latest を再取得しても 0.2 よりも古い
latestタグを上書きしてプッシュ
$ docker image tag refirio/test:0.2 refirio/test:latest
$ docker image push refirio/test:latest
イメージを再取得
$ docker image rm refirio/test:0.1
$ docker image rm refirio/test:0.2
$ docker image rm refirio/test:latest
$ docker container run --name dockerhub_test -v $PWD/docker/php_create_file/code:/var/www/html -p 80:80 -d refirio/test
最新の内容を取得できている