dockerでイメージをリポジトリに保存する

4 min read読了の目安(約4000字

はじめに

くーばねてすをやっつけるためにこれまでにLinuxさんとAWSさんと仲良くさせていただいたが、新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。

概要

■コンテナをローカルリポジトリに保存する(イメージを作成)
■イメージをリモートリポジトリに保存
■docker Hubリポジトリに保存

をまとめた!(^^)

■コンテナの変更をローカルリポジトリに保存する(イメージを作成)

コンテナに色々インストールしたりしてこの設定のコンテナをコピーできるようにしたいな~と
思ったら、変更したコンテナの設定内容をイメージとして作成するためにローカルリポジトリに保存する。

変更したコンテナのイメージをローカルリポジトリに保存
$ docker commit オプション コンテナID(名前) リポジトリ名:タグ

やってみる(^^)

centosイメージのコンテナに色々インストール
$ docker run centos:7 bash
[root@f343b1eae2b3 /]#yum update -y
略
[root@f343b1eae2b3 /]#yum install -y git
略
[root@f343b1eae2b3 /]#yum install -y mariadb
略
Comlete!
[root@f343b1eae2b3 /]#exit
exit
$ docker ps -a
CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                      PORTS                  NAMES
f343b1eae2b3   centos:7                     "bash"                   27 minutes ago   Exited (0) 7 seconds ago                           compassionate_wright
$ docker commit f343b1eae2b3 centos:7-git-mariadb
sha256:f485af9aeb0c90cfe3c641fa5778395a3ed32a13deee214ae03d1330cc79bb91
※イメージが作成されたか確認
$ docker images
REPOSITORY                   TAG             IMAGE ID       CREATED              SIZE
centos                       7-git-mariadb   f485af9aeb0c   About a minute ago   478MB
centos                       7               8652b9f0cb4c   2 months ago         204MB

■イメージをリモートリポジトリ(Docker Hub)に保存

ローカルリポジトリに保存したイメージをリモートリポジトリとしてdocker hubに保存する。
リモートリポジトリのサービスとしてはdocker hubのほかにIBM社やGoogle社が提供している。
今回はdocker hubのリモートリポジトリを使用する。
①docker hubでIDを取得する
②ターミナルでdocker hubにログイン
③ローカルのイメージにリモートリポジトリでのリポジトリ名とタグを設定する。
④イメージをリモートリポジトリにアップロードする。
⑤WEBブラウザからイメージがアップロードできてるか確認。

①docker hubでIDを取得する

WEBブラウザでdocker HubでIDを取得する。

https://hub.docker.com/
コースが選択できるがテストなので無料でつかえるfree枠(一般ユーザー)を利用する。

メールが届いてるのを確認してトップページへ。

利用できるようになる。

②ターミナルでdocker hubにログイン

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: ユーザー名入力
Password: パスワード入力
Login Succeeded

③ローカルのイメージにリモートリポジトリでのリポジトリ名とタグを設定する。

一般ユーザーで登録した場合はリポジトリ名がそのままユーザー名になる。ローカルイメージにリポジトリでのリポジトリ名とタグを設定する。

$ docker tag (ローカルの)リポジトリ:タグ ユーザー名/(リモートの)リポジトリ:タグ 

(ローカルの)リポジトリ:タグはコンテナIDで省略することができる。
やってみる

docker hubにログインした状態で
$  docker images ※リポジトリ名、タグ、IDを確認
REPOSITORY                   TAG             IMAGE ID       CREATED              SIZE
centos                       7-git-mariadb   f485af9aeb0c   About a minute ago   478MB

$ docker tag f485af9aeb0c ユーザー名/centos:7-git-mariadb

$ docker images
REPOSITORY                   TAG             IMAGE ID       CREATED             SIZE
centos                       7-git-mariadb   f485af9aeb0c   About an hour ago   478MB
ユーザー名/centos             7-git-mariadb   f485af9aeb0c   About an hour ago   478MB

タグつけされたイメージの確認ができた。

④イメージをリモートリポジトリにアップロードする

$ docker push ユーザー名/リポジトリ名/タグ

やってみる('_')

centos
$ docker push ユーザー名/centos:7-git-mariadb
The push refers to repository [docker.io/ユーザー名/centos]
ff23c6fd8529: Pushed                                                                                                                                                        174f56854903: Mounted from library/centos                                                                                                                                   7-git-mariadb: digest: sha256:9392836360fdea89e89c544b64452195d8f70450179e77a84396a300a2cd198f size: 741

アップロードできた。

⑤WEBブラウザからイメージがアップロードできてるか確認。

トップページに入り、リポジトリを確認。

https://hub.docker.com/
新しいリポジトリとイメージが作成されている。

まとめ

docker Hubにアップロードできた!(>_<)