Docker | Images #docker
概要
Docker の Images について。
Image とは?
Docker のコンテナの基盤。
Image は Docker Host にダウンロードして利用する。
Host に Image がない場合は、 レジストリからダウンロードされます。
デフォルトのレジストリは Docker Hub の public レジストリです。
Local Host にある Image の確認
docker images
コマンドで確認できます
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tomcat 8.0 5814f70bc700 2 weeks ago 352.6 MB
ubuntu 14.04 5506de2b643b 4 weeks ago 199.3 MB
hello-world latest ef872312fe1b 7 weeks ago 910 B
training/webapp latest 31fa814ba25a 6 months ago 278.8 MB
Image の指定
前述の docker images
で確認した REPOSITORY:TAG でイメージを指定できます。
※タグを省略すると latest を指定したことになります。
$ sudo docker run ubuntu:14.04 /bin/echo hoge
hoge
$ sudo docker run tomcat:8.0 /bin/echo hoge
hoge
$ sudo docker run training/webapp /bin/echo hoge
hoge
Image のダウンロード
Image のダウンロードは、実行時に行われますが
事前に行うことも可能です。
事前に行う場合は docker pull
を利用します
$ sudo docker images | grep hello-world
$ sudo docker pull hello-world
$ sudo docker images | grep hello-world
hello-world latest ef872312fe1b 7 weeks ago 910 B
DockerHub で Image を検索
DockerHub では、多くの人が作成した様々な用途の Image を検索・利用できます。
Docker Hub
また、 docker search
コマンドでも検索可能です。
$ sudo docker search middleman
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hivetech/middleman 0 [OK]
supaspoida/middleman-nginx 0
boymaas/middleman-nginx 0
octohost/middleman-nginx 0
durdn/middleman-3.2.1 0
Image の更新
docker commit
によって、既存のイメージを更新し、新たなバージョンの Image を作成することができます。
- インタラクティブモードでコンテナを起動して、 tree を追加インストールしてみます
$ sudo docker run -t -i training/sinatra /bin/bash
root@408666a36ef7:/# which tree
root@408666a36ef7:/# tree -L 1
bash: tree: command not found
root@408666a36ef7:/# apt-get install tree
root@408666a36ef7:/# tree -L 1
.
|-- bin
|-- boot
|-- dev
|-- etc
|-- home
|-- lib
|-- lib64
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- srv
|-- sys
|-- tmp
|-- usr
`-- var
root@408666a36ef7:/# exit
$
- tree install 済みのイメージを新バージョンとして登録する
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18be000ffcb7 training/sinatra:latest "/bin/bash" 3 minutes ago Exited (0) About a minute ago silly_hoover
$ sudo docker commit -m="Added tree" -a="tbpgr" 18be000ffcb7 ouruser/sinatra:v2
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ouruser/sinatra v2 1a444f8947b7 21 seconds ago 448.3 MB
training/sinatra latest f0f4ab557f95 5 months ago 447 MB
- 新バージョンのイメージを起動してみる
$ sudo docker run -t -i ouruser/sinatra:v2 /usr/bin/tree -L 1
$ sudo docker run -t -i ouruser/sinatra:v2 /usr/bin/tree
-L 1
.
|-- bin
|-- boot
|-- dev
|-- etc
|-- home
|-- lib
|-- lib64
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- srv
|-- sys
|-- tmp
|-- usr
`-- var
Dockerfile による Image の作成
- Image 作成作業用ディレクトリと Dockerfile のひな形を生成
$ mkdir qiita_scouter
$ cd qiita_scouter
$ touch Dockerfile
- Dockerfile の編集
Ubuntu 1404 環境に Ruby をインストールし、 qiita_scouter gem をインストールします。
qiita_scouter gem
FROM ubuntu:14.04
MAINTAINER tbpgr <tbpgr@tbpgr.jp>
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install qiita_scouter
- Dockerfile を利用した build
$ sudo docker build -t="tbpgr/qiita_scouter" .
$ sudo docker images | grep tbpgr
tbpgr/qiita_scouter latest fcec37091608 59 seconds ago 315.5 MB
- 作成したイメージを使ってみる
$ sudo docker run -i -t tbpgr/qiita_scouter
root@19b2b4dfec37:/# qiita_scouter h
Commands:
qiita_scouter analyze # Analyze qiita power_levels
qiita_scouter help [COMMAND] # Describe available commands or one specific command
qiita_scouter version # version
Options:
-h, [--help] # help message.
[--version] # version
root@19b2b4dfec37:/# qiita_scouter analyze tbpgr
ユーザー名: tbpgr 戦闘力: 316642 攻撃力: 41540 知力: 264650 すばやさ: 10452
Image にタグを設定
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tbpgr/qiita_scouter latest fcec37091608 19 minutes ago 315.5 MB
$ sudo docker tag fcec37091608 tbpgr/qiita_scouter:v1
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tbpgr/qiita_scouter latest fcec37091608 19 minutes ago 315.5 MB
tbpgr/qiita_scouter v1 fcec37091608 19 minutes ago 315.5 MB
Image を DockerHub に公開( Private 設定も可 )
$ sudo docker push tbpgr/qiita_scouter
Image を削除
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tbpgr/qiita_scouter latest fcec37091608 19 minutes ago 315.5 MB
tbpgr/qiita_scouter v1 fcec37091608 19 minutes ago 315.5 MB
r$ sudo docker rmi tbpgr/qiita_scouter:v1
Untagged: tbpgr/qiita_scouter:v1
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tbpgr/qiita_scouter latest fcec37091608 19 minutes ago 315.5 MB
参照
【N番煎じ】Ruby で Qiita 戦闘力を計測するQiitaScouter を作ってみた
Docker Official | Working with Docker Images