# Dockerで環境作るのにDockerfileを使ってないの?
どこでもいいので Dockerfileを用意する。
~/Dockerfileファイルを用意しました。
前回Docker導入時に行った簡単なコマンドを、Dockerfileに定義してみます。
その前に、今回確認するimageが何かを確認
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> 5d021e068905 49 seconds ago 300.6 MB centos 6.4 539c0211cd76 9 months ago 300.6 MB centos latest 539c0211cd76 9 months ago 300.6 MB
僕の場合は、centosというイメージ名があります。 ※イメージ名は、人によって違いますので、事前に確認を
centosに対して簡単なコマンドを実行してみると
$ docker run centos /bin/echo "Hello World" Hello World
お決まりの言葉「Hello World」が出力されました。
これをDockerfileに書き出すと
$ vi ~/Dockerfile FROM centos RUN /bin/echo "Hello World"
こうなります。 たったのこれだけです。
centosでecho "Hello World"実行させる と書いてます。
ではでは、実行
Dockerfileを使って実行する方法は docker build <Dockerfile格納ディレクトリパス>なので
$ docker build ./
と実行します。
では、
# docker build ./ Uploading context 30.72 kB Step 1 : FROM centos ---> 539c0211cd76 Step 2 : RUN /bin/echo "Hello World" ---> Running in b7f432d09ac5 Hello World ---> 92a6f4e013d2 Successfully built 92a6f4e013d2
Stepを踏んで処理が実行されていることがわかりますね。
ただ、これだけだと、Dockerfileを使うメリットが全然わかないですね。 Dockerfileのメリットを簡単に書くとしたら
FROM centos RUN /bin/echo "現在の日時は?" RUN /bin/date RUN /bin/echo "なるほど"
こんな感じで、複数のRUNを定義できる!! ちなみに実行すると
$ docker build -no-cache . Uploading context 30.72 kB Step 1 : FROM centos ---> 539c0211cd76 Step 2 : RUN /bin/echo "現在の日時は?" ---> Running in b670e4c9dc07 現在の日時は? ---> 3e8f0a3a1fa9 Step 3 : RUN /bin/date ---> Running in ce7076b6c8ee Wed Jan 22 22:48:32 EST 2014 ---> 44ef8a8b589b Step 4 : RUN /bin/echo "なるほど" ---> Running in edea3c58c41a なるほど ---> dd113a8261cd Successfully built dd113a8261cd
結果はこんな感じですね。 これで色々CI回したりしてみたいです。 Dockerfile入門は以上です。
※追記 作成した環境にsshもできます docker run -i -t dd113a8261cd /bin/bash