イメージの作り方


こではイメージの作り方を具体的に体験してみましょう。

準備

$ 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 もお忘れなく。

results matching ""

    No results matching ""