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

Docker超入門:Dockerコンテナからイメージを作る流れ➁:作成・公開

Dockerコンテナからイメージを作る流れ②:作成・公開

 前回の記事では、Ubuntuのイメージを取得してコンテナを作成・実行し、ファイルを操作するところまで解説しました。今回はその続きとして、 ④コンテナからイメージを作成する → ⑤イメージを公開する までの流れを見ていきます。

全体の流れ

コンテナからDockerイメージを作る流れは、下図のとおりです。

  • イメージの取得
  • コンテナの作成・実行
  • コンテナの操作
  • イメージの作成
  • イメージの公開

今回は、④⑤のステップを順に試していきます。

④ イメージの作成

 コンテナで行った変更を新しいイメージとして保存するには、docker container commit コマンドを使います。これにより、今動いているコンテナの状態をスナップショットのようにイメージ化できます。

コマンドの書式

docker container commit -a "<作者名>" <コンテナ名> <ユーザー名>/<イメージ名>:<タグ>

実行例

docker container commit -a "infralinux" ubuntu-smp infralinux1/ubuntu-smp-img:1.0

このコマンドでは、

  • -a "infralinux" : イメージの作者情報を指定
  • ubuntu-smp : 変更を保存する元コンテナ名
  • infralinux1/ubuntu-smp-img:1.0 : 作成される新しいイメージ名とタグ

コマンドの詳細解説

docker container commit-a "infralinux"ubuntu-smpinfralinux1/ubuntu-smp-img:1.0
コンテナからイメージを作成する。Dockerイメージ作者の情報を設定する。コンテナ名ユーザ名区切りイメージ名タグ

オプション解説

オプション説明
-a作者情報を設定する。
-mコミット時にコメント(変更内容など)を付ける。
(指定なし)コンテナの状態をそのまま保存する。

出力例

PS C:\Users\joeac> docker container commit -a "infralinux" ubuntu-smp infralinux1/ubuntu-smp-img:1.0
sha256:2fce6a3fdb836b993427e080a4d1499778a059ad8acae5ea70326fdcfeb35286

実行後の確認

docker image ls

出力例

PS C:\Users\joeac> docker image ls
REPOSITORY                   TAG       IMAGE ID       CREATED          SIZE
infralinux1/ubuntu-smp-img   1.0       2fce6a3fdb83   22 seconds ago   117MB
infralinux1/ubuntu-smp       1.0       83e81b62b3c4   13 days ago      117MB
ubuntu-echo                  latest    83e81b62b3c4   13 days ago      117MB
ubuntu                       latest    353675e2a41b   13 days ago      117MB

 これで「ubuntu-smp」コンテナから新しいイメージ「infralinux1/ubuntu-smp-img:1.0」が作成されました。

⑤ イメージの公開

作成したイメージを他の人と共有するには、Docker Hubにアップロードします。

Docker Hubへのログイン

Docker Desktopでサインインしていない場合は、以下を実行してログインします。

docker login

ユーザー名とパスワードを入力して認証します。

出力例

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 image push コマンドを使用します。

コマンドの書式

docker image push <ユーザー名>/<イメージ名>:<タグ>

実行例

docker image push infralinux1/ubuntu-smp-img:1.0

出力例

PS C:\Users\joeac> docker image push infralinux1/ubuntu-smp-img:1.0
The push refers to repository [docker.io/infralinux1/ubuntu-smp-img]
953cdd413371: Mounted from infralinux1/ubuntu-smp
e6426ea163cd: Pushed
1.0: digest: sha256:2fce6a3fdb836b993427e080a4d1499778a059ad8acae5ea70326fdcfeb35286 size: 746

 これでDocker Hub上に「ubuntu-smp-img」がアップロードされ、誰でもpullできるようになります。

Docker Hubリポジトリにあるイメージの削除

 Docker Hubのリポジトリにあるイメージを削除するには、Docker Hubのウェブサイトにアクセスし、リポジトリの「Tags」ページから削除対象のイメージを選択後、「Action」メニューから「Delete」をクリックします。

Docker Hubウェブサイトから削除する方法

  1. Docker Hubにアクセスする
    ブラウザでDocker Hubを開き、サインインします。
  2. リポジトリを選択する
    削除したいイメージが含まれるリポジトリに移動します。
  3. イメージタグを選択する
    「Tags」タブをクリックし、削除したいイメージのタグを選択します。
  4. 「Delete」を選択する
    画面右上部の「Delete」をクリックします。
  5. 確認する
    表示される確認画面で再度「Delete」をクリックして削除を完了します。

まとめ

 ここまでで、Ubuntuのコンテナに変更を加え、それを新しいイメージとして保存し、さらにDocker Hubに公開する手順を学びました。

  • docker container commit でコンテナからイメージを作成
  • docker image push でDocker Hubに公開

これでチームメンバーや他の開発者と同じ環境を簡単に共有できるようになります。