Dockerfileについて
Dockerイメージを生成するための一連の手順を記述したテキストファイル。
サンプル1
- Dockerfile作成
$ vi Dockerfile
FROM debian:wheezy
RUN apt-get update && apt-get install -y cowsay fortune
FROM
・・・ 使用するベースイメージを指定。debianイメージのwheezyタグ。最初の命令は必ずFROMでないとダメ。
RUN
・・・ イメージ内で実行するシェルコマンドを指定。
- Dockerfileからビルドしてイメージ構築
$ ls
Dockerfile
$ docker build -t test/cowsay-dockerfile .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM debian:wheezy
wheezy: Pulling from library/debian
4269eaa217cc: Pull complete
Digest: sha256:d949cbb93a58de27eec4c911f27b9f09edeb3d3ce57cf5ce77d4745211c947f6
Status: Downloaded newer image for debian:wheezy
---> 45c34e2cec9b
Step 2/2 : RUN apt-get update && apt-get install -y cowsay fortune
---> Running in 4454b03f1cc4
Get:1 http://security.debian.org wheezy/updates Release.gpg [1601 B]
Get:2 http://security.debian.org wheezy/updates Release [52.3 kB]
Get:3 http://security.debian.org wheezy/updates/main amd64 Packages [782 kB]
Get:4 http://deb.debian.org wheezy Release.gpg [2373 B]
Get:5 http://deb.debian.org wheezy-updates Release.gpg [1601 B]
Get:6 http://deb.debian.org wheezy Release [191 kB]
Get:7 http://deb.debian.org wheezy-updates Release [155 kB]
Get:8 http://deb.debian.org wheezy/main amd64 Packages [7634 kB]
Get:9 http://deb.debian.org wheezy-updates/main amd64 Packages [7481 B]
Fetched 8828 kB in 5s (1529 kB/s)
ry
- 実行
$ docker run test/cowsay-dockerfile /usr/games/cowsay "Moo"
_____
< Moo >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
サンプル2
$ vi dockerfile
FROM debian:wheezy
RUN apt-get update && apt-get install -y cowsay fortune
ENTRYPOINT ["/usr/games/cowsay"]
ENTRYPOINT
・・・ docker run
に渡される任意の引数を扱う実行ファイルを指定
- ビルドして実行
$ docker build -t test/cowsay-dockerfile .
$ docker run test/cowsay-dockerfile "Moo"
_____
< Moo >
-----
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
ENTRYPOINT ["/usr/games/cowsay"]
を指定してるので、docker run
時に/usr/games/cowsay
なしで実行できる。
サンプル3
- スクリプト作成
$ vi entrypoint.sh
#!/bin/bash
if [ $# -eq 0 ];then
/usr/games/fortune | /usr/games/cowsay
else
/usr/games/cowsay "$@"
fi
$ chmod +x entrypoint.sh
引数なければfortuneコマンド実行してそれをパイプでcowsayコマンドに渡す。
引数があればcowsayコマンドにその引数を渡して実行する。
- Dockerファイル作成
$ vi Dockerfile
FROM debian:wheezy
RUN apt-get update && apt-get install -y cowsay fortune
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
COPY
・・・ ホスト上のファイル(entrypoint.sh)をコンテナイメージのパス(/)にコピーする。
- 実行
$ docker build -t test/cowsay-dockerfile .
$ docker run test/cowsay-dockerfile
_______________________________________
/ English literature's performing flea. \
| |
\ -- Sean O'Casey on P. G. Wodehouse /
---------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
$ docker run test/cowsay-dockerfile Hellow HogeHoge
_________________
< Hellow HogeHoge >
-----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||