dockerイメージを公開する

目的

Dockerイメージの公開方法と、その周辺用語を理解する

用語の整理

  • レジストリ
    イメージのホスティングと配布を受け持つサービス。 デフォルトのレジストリはDocker hub。プライベートレジストリとしてGCPのContainer Registryなどがある。

  • リポジトリ
    関連するイメージの集合(通常は、同じアプリケーションもしくはサービスの様々なバージョンを提供する)

  • タグ
    リポジトリ内のイメージに与えられる識別子(7.4.6やlatestなど)

docker pull tanaka/apache-php:latest
というコマンドは、レジストリであるDocker hubのtanaka/apache-phpリポジトリから、latestというタグのついたイメージを取得している。

イメージの名前空間

Dockerイメージが属する名前空間には3種類あり、イメージ名から判断できる。

この名前空間の構成によって、ユーザはイメージがどこから来たものなのか、混乱せずに済む。

イメージを公開する

今回は、この記事で作ったDockerイメージを公開する。
公開するにはレジストリの認証が必要なので、Docker hubの場合は docker login コマンドで事前にログインを行う。

$docker login

認証に成功したら公開するために docker push コマンドを実行する。
docker push [オプション] 名前[:タグ]

$ docker push repo/cowsay-fortune
The push refers to repository [docker.io/repo/cowsay-fortune]
304429cbf295: Pushed 
10782bf6eac8: Pushed 
8c02234b8605: Mounted from library/debian 
latest: digest: sha256:8fd21c04afa00c95d392afea5deec89702c492f2974518a6abe681bcc912d2ad size: 948

ここでは、リポジトリ名の後にタグを指定していないので、自動的にlatestというタグが割り当てられる。 アップロードが完了したら docker pull コマンドでイメージをダウンロードできる。

docker pull [オプション] 名前[:タグ] | [レジストリ・ホスト[:レジストリ・ポート]/]名前[:タグ]
手元のイメージを削除して pull してみる。

$docker pull repo/cowsay-fortune
Using default tag: latest
latest: Pulling from repo/cowsay-fortune
376057ac6fa1: Already exists 
99b463bdca15: Pull complete 
2588e1ff2246: Pull complete 
Digest: sha256:8fd21c04afa00c95d392afea5deec89702c492f2974518a6abe681bcc912d2ad
Status: Downloaded newer image for repo/cowsay-fortune:latest
docker.io/repo/cowsay-fortune:latest