コンテナからのイメージ作成

Docker Hub に作成したコンテナのイメージをアップロードします。

まずはイメージのもととなるコンテナを作ります。 以下の工程を簡単に解説すると、イメージ training/sinatra を /bin/bash を実行するコンテナとして動かし、そこに json gem を追加して終了しています。 既にコンテナを持っている場合は読み飛ばして下さい。

コンテナの作成は DockerFile からも行うことが可能です。

[root@localhost ~]# sudo docker pull training/sinatra
Pulling repository training/sinatra
3c59e02ddd1a: Download complete 
f0f4ab557f95: Download complete 
511136ea3c5a: Download complete 
<...>

[root@localhost ~]# sudo docker run -t -i training/sinatra /bin/bash
root@7428e024224c:/# 

[root@localhost ~]# docker run -t -i training/sinatra /bin/bash
root@0852e1929b35:/# gem install json
Fetching: json-1.8.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-1.8.1
1 gem installed
Installing ri documentation for json-1.8.1...
Installing RDoc documentation for json-1.8.1...
root@0852e1929b35:/# exit
exit

このイメージを commit します。-a は投稿者(author)で -m はコメント(message)を指定しています。 イメージ名は ouruser/sinatra でタグ名は v2 としていまが。ouruser は自分のユーザー名としないと push 時に権限エラー(403 Access Denied)が出ます。

[root@localhost ~]# docker commit -m="Added json gem" -a="XXXX" 0852e1929b35 ouruser/sinatra:v2
e6d1854b744dc93825ec659341e010e39c0be10b6eea211441e80bfada7a9759

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ouruser/sinatra     v2                  e6d1854b744d        2 minutes ago       451.3 MB
ubuntu              14.04               1357f421be38        3 days ago          192.7 MB
<...>

イメージをアップロード

作成したイメージを push します。

[root@localhost ~]# docker push XXXXXXXX/sinatra
The push refers to a repository [XXXXXXXX/sinatra] (len: 1)
Sending image list
Pushing repository XXXXXXXX/sinatra (1 tags)
511136ea3c5a: Image already pushed, skipping 
3e76c0a80540: Image already pushed, skipping 
be88c4c27e80: Image already pushed, skipping 
bfab314f3b76: Image already pushed, skipping 
e809f156dc98: Image already pushed, skipping 
ce80548340bb: Image already pushed, skipping 
79e6bf39f993: Image already pushed, skipping 
f0f4ab557f95: Image already pushed, skipping 
db59008a2793: Image successfully pushed 
Pushing tag for rev [db59008a2793] on {https://cdn-registry-1.docker.io/v1/repositories/XXXXXXXX/sinatra/tags/v2}
[root@localhost ~]# docker search XXXXXXXX
NAME                DESCRIPTION   STARS     OFFICIAL   AUTOMATED
XXXXXXXX/sinatra                  0                    
[root@localhost ~]#