このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Docker Hubへのイメージ公開から取得・コンテナ実行までの流れ

Docker Hubへのイメージ公開から取得・コンテナ実行までの流れ

 Docker Hubは、世界中の開発者がイメージを公開・共有できる公式レジストリです。自分が作成したイメージをDocker Hubに公開しておけば、他のマシンに簡単にダウンロードして実行できます。ここでは、Docker Hubへのオリジナルイメージの公開から、公開したイメージを取得してコンテナを実行するまでの流れ を解説していきます。

Docker Hubへのログイン

Docker Hubにアクセスするには、まずログインが必要です。
ログインはコマンドラインからでも、Docker DesktopのGUIからでも可能です。

コマンドの書式

docker login

 このコマンドを実行すると、ユーザー名とパスワード(もしくはアクセストークン)を入力するよう求められます。

項目説明
UsernameDocker Hubのユーザー名
Password登録したパスワード、または発行したアクセストークン

認証情報がすでに保存されている場合は自動的にログインされます。

出力例

PS C:\Users\joeac> docker login
Authenticating with existing credentials... [Username: infralinux1]

i Info → To login with a different account, run 'docker logout' followed by 'docker login'

Login Succeeded

Docker Hubにイメージを公開

 ローカルに作成したDockerイメージを、Docker Hubに公開(push)してみましょう。これで他の環境から取得できるようになります。

イメージにタグを付ける

docker image tag [ローカルイメージ名] [Docker Hubユーザー名]/[リポジトリ名]:[タグ]

出力例

PS C:\Users\joeac> docker image tag ubuntu-echo infralinux1/ubuntu-smp:2.0

タグを確認するには以下のコマンドを使います。

PS C:\Users\joeac> docker image ls
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
ubuntu-smp2                  latest    29f7dd0c5150   25 hours ago   118MB
infralinux1/ubuntu-smp-img   1.0       231a383336c0   2 days ago     117MB
infralinux1/ubuntu-smp       1.0       83e81b62b3c4   2 weeks ago    117MB
infralinux1/ubuntu-smp       2.0       83e81b62b3c4   2 weeks ago    117MB
ubuntu-echo                  latest    83e81b62b3c4   2 weeks ago    117MB

Docker Hubへアップロード

docker image push [Docker Hubユーザー名]/[リポジトリ名]:[タグ]

出力例

PS C:\Users\joeac> docker image push infralinux1/ubuntu-smp:2.0
The push refers to repository [docker.io/infralinux1/ubuntu-smp]
eb2ec5c56341: Pushed
953cdd413371: Pushed
2.0: digest: sha256:83e81b62b3c4e064ce500ca203c01da5b101b857fe54bb71fbd1984af610ee0d size: 855

 アップロードが完了すると、Docker Hubのリポジトリページに反映されます。Docker Desktop の GUIでも「Images → My Hub」タブから確認可能です。

イメージの取得(docker image pull)

 次に、Docker Hubからイメージを取得します。ここでは、公開済みの infralinux1/ubuntu-smp:2.0 を使います。公開したイメージは、他の環境や別のPCから取得できるようになります。

コマンドの書式

docker image pull [ユーザー名/イメージ名:タグ]

コマンドの意味

docker image pull … 指定したイメージをDocker Hubなどのリモートレジストリから取得する

出力例

PS C:\Users\joeac> docker image pull infralinux1/ubuntu-smp:2.0
2.0: Pulling from infralinux1/ubuntu-smp
Digest: sha256:83e81b62b3c4e064ce500ca203c01da5b101b857fe54bb71fbd1984af610ee0d
Status: Image is up to date for infralinux1/ubuntu-smp:2.0
docker.io/infralinux1/ubuntu-smp:2.0

実行すると、イメージの各レイヤーが順にダウンロードされ、ローカルに保存されます。

主なオプション

オプション説明
:タグ名バージョンを指定。省略すると latest が適用される
--all-tags指定リポジトリのすべてのタグを取得

取得したイメージを確認します。

PS C:\Users\joeac> docker image ls
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
ubuntu-smp2                  latest    29f7dd0c5150   25 hours ago   118MB
infralinux1/ubuntu-smp-img   1.0       231a383336c0   2 days ago     117MB
infralinux1/ubuntu-smp       1.0       83e81b62b3c4   2 weeks ago    117MB
infralinux1/ubuntu-smp       2.0       83e81b62b3c4   2 weeks ago    117MB
ubuntu-echo                  latest    83e81b62b3c4   2 weeks ago    117MB

一覧に infralinux1/ubuntu-smp:2.0 が表示されれば成功です。

コンテナの作成と実行(docker container run)

取得したイメージを元に、コンテナを実行してみましょう。

コマンドの書式

docker container run [オプション] [イメージ名:タグ]

出力例

PS C:\Users\joeac> docker container run --name ubuntu-smp2 infralinux1/ubuntu-smp:2.0
Hello Ubuntu

実行すると、「Hello Ubuntu」と表示されます。

イメージの削除(Docker Hub側)

不要になった公開したイメージを、Docker Hubから削除しておきます。
手順は次のとおりです。

1.Docker Hub にアクセスしてログイン

2.右上のメニューから「My Hub」をクリック

3.「Repositories」一覧ページが表示される。

4.削除したいリポジトリ(例:infralinux1/ubuntu-smp)をクリック

5.「Settings」タブをクリック

6.ページ下部までスクロールし「Delete repository」をクリック

7.表示されたポップアップに案内されたリポジトリ名(例:ubuntu-smp)を入力

8.「Delete repository forever」をクリック

削除確認の状態

1.削除直後は「DELETING」のマークが付きます。

削除直後は「DELETING」と表示され、しばらくすると完全に消えます。

2.ページをリロードすると、リポジトリが一覧から消えます。

反映には少し時間がかかります

ローカル環境のクリーンアップ(docker system prune)

 最後に、ローカルで不要になったコンテナやイメージをまとめて削除するには、以下のコマンドが便利です。5章の演習に備えて環境を綺麗にしておきます。

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:

(省略)

du5nt75d21ukgmp1jh2ft01ne

Total reclaimed space: 60.36MB
  • -a を付けると未使用のイメージも含めて削除
  • 実行後に「Total reclaimed space: ○.○GB」と表示され、解放されたディスク容量がわかります

まとめ

  • docker login でDocker Hubにログイン
  • docker image pull でイメージを取得
  • docker container run でコンテナを作成・実行
  • 不要になったイメージやコンテナは削除してクリーンに保つ