イメージの作り方
こではイメージの作り方を具体的に体験してみましょう。
準備
$ cd ../whalesay/
$ ls -la
$ docker load < whalesey.tar
$ docker run docker/whalesay cowsay phper-nya!
____________
< paper-nya! >
------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
くじらさんがしゃべった!!!!!!!
このコンテナを拡張してイメージを作ろうと思います。
cowsayコマンドの使い方
cowの一覧は-l
オプションで見ることができます。
$ docker run docker/whalesay cowsay -l
/usr/local/share/cows:
beavis.zen bong bud-frogs bunny cheese cower daemon default docker dragon
dragon-and-cow elephant elephant-in-snake eyes flaming-sheep ghostbusters
head-in hellokitty kiss kitty koala kosh luke-koala meow milk moofasa moose
mutilated ren satanic sheep skeleton small sodomized squirrel stegosaurus
stimpy supermilker surgery telebears three-eyes turkey turtle tux udder
vader vader-koala www
cowは-f
オプションで変更できます(うしさんになった)
$ docker run docker/whalesay cowsay -f www phper-nya!
____________
< phper-nya! >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||--WWW |
|| ||
デフォルトのcowはファイルを書き換えて変更できます(コンテナ内)
# cp /usr/local/share/cows/www.cow /usr/local/share/cows/default.cow
docker commit - 起動したコンテナからイメージを作成
いちばん手っ取り早くイメージを作成する方法は docker commit を使う方法です。
イメージ内に接続してデフォルトのcowを変更してみます。
$ docker run -it docker/whalesay /bin/bash
# cp /usr/local/share/cows/www.cow /usr/local/share/cows/default.cow
# exit
実行が完了したコンテナのIDを確認します。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45040acafc72 docker/whalesay "/bin/bash" 9 minutes ago Up 5 minutes dazzling_roentgen
docker commit を使ってイメージを作りましょう。コンテナIDもしくは名前で指定しましょう。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
$ docker commit dazzling_roentgen hideaki/cowsay
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hideaki/cowsay latest 256199fb2266 20 minutes ago 247MB
イメージが登録されています!早速実行してみましょう。
$ docker run hideaki/cowsay cowsay Moo
_____
< Moo >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||--WWW |
|| ||
うしさんに変更されたcowsayイメージになりました!
Dockerfile - ファイルに記載した内容をイメージ化
commitは手っ取り早く作ることができますが、手作業が入るため同じイメージを作ることは二度とできません。
そこで突如出現するDockerfile。
これは Infrastructure as code の考え方に則り、構築手順をファイル化しファイル内容に沿ったイメージを作成することができます。
Source: さわって理解するDocker入門
詳しい書式は Dockerfile リファレンス や Dockerfileの命令を理解して、よりDockerを有効活用したい!を参考にしてください。ここでは最低限の説明に留めます。
Dockerfileのコマンド一覧(抜粋) |
---|
コマンド | 意味 | 補足 |
---|---|---|
FROM | ベースイメージとなるイメージを指定する | |
RUN | イメージをビルドするためのコマンドを指定する | 「RUN apk add –update py-pip」の場合、実際には「apk add –update py-pip」の部分が実行される |
COPY | ホストからコンテナ内にファイルをコピーする | |
CMD | イメージからコンテナを起動するときに実行するコマンドを指定する | Dockerfile内でCMDは1個だけ指定できる |
カスタムイメージを作ってみよう!
Dockerfileを利用してカスタムイメージを作ってください。ただし下記条件は守ってください。
- 好きなcowに変更する
- runにコマンドの指定(cowsay hoge)がない場合は何か適当に喋る。
FROM docker/whalesay:latest
RUN
CMD ["", ""]
Dockerfileが作成できたら下記コマンドでイメージをビルドします。-t
オプションでタグを付けておきます。
$ docker build -t hideaki/cowsay .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hideaki/cowsay latest 819ee733dd50 15 minutes ago 247MB
$ docker run hideaki/cowsay
_____
< boo >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||--WWW |
|| ||
これであなたもイメージマスター!かも。
お掃除 docker system prune
もお忘れなく。