ページ

2014年11月30日日曜日

Dockerをさわってみる 3 - Dockerfile -

Dockerfileで環境作り

前回から少ししか経ってないのにもうDocker1.1が出たらしい。。早っ><;
今回はDockerfileを使って環境を作成してみる。

Dockerfileとは
  MakefileのDocker版。#がコメント。{命令}と{引数}でスペース区切りで記述。
  「docker build」する事でDockerfileの上から順に実行される。

※主な命令
{命令}用途
FROM元となるDockerイメージの指定
MAINTAINER作成者の情報
RUNコマンドの実行
ADDファイル/ディレクトリの追加
CMDコンテナーの実行コマンド 1
ENTRYPOINTコンテナーの実行コマンド 2
WORKDIR作業ディレクトリの指定
ENV環境変数の指定
USER実行ユーザーの指定
EXPOSEポートのエクスポート
VOLUMEボリュームのマウント

試しに、前回同様nginxをインストール + index.htmlを追加するDockerfileを作成してみる。
[root@localhost docker]# mkdir nginx1
[root@localhost docker]# cd nginx1/
[root@localhost nginx1]# ls
[root@localhost nginx1]# vi Dockerfile
[root@localhost nginx1]# ls
Dockerfile
[root@localhost nginx1]# echo 'hello docker' > index.html
[root@localhost nginx1]# ls
Dockerfile  index.html
[root@localhost nginx1]# 

いざ、build!!
[root@localhost nginx1]# docker build -t fuji/nginx:1.0 .
Sending build context to Docker daemon 3.584 kB
Sending build context to Docker daemon 
Step 0 : FROM ubuntu
 ---> 1357f421be38
Step 1 : MAINTAINER XXXXXX <xxxx@gmail.com>
 ---> Running in e779846d56f3
 ---> 86560b5fee44
Removing intermediate container e779846d56f3
Step 2 : RUN apt-get update
 ---> Running in a3a46568fd97
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
Ign http://archive.ubuntu.com trusty-security InRelease
Ign http://archive.ubuntu.com trusty-proposed InRelease

ん〜、ビルドは最後までいったっぽいが、image名が空?
[root@localhost nginx1]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              164fa62b79b6        42 seconds ago      231.5 MB
fuji/nginx          latest              fd64b49b28ca        7 weeks ago         231.2 MB
ubuntu              14.10               b8d67033ed07        7 weeks ago         242.4 MB
ubuntu              utopic              b8d67033ed07        7 weeks ago         242.4 MB
ubuntu              14.04               1357f421be38        7 weeks ago         192.7 MB
ubuntu              14.04.1             1357f421be38        7 weeks ago         192.7 MB
ubuntu              trusty              1357f421be38        7 weeks ago         192.7 MB
ubuntu              latest              1357f421be38        7 weeks ago         192.7 MB
ubuntu              12.04               2bed76595591        7 weeks ago         114.6 MB
ubuntu              12.04.5             2bed76595591        7 weeks ago         114.6 MB
ubuntu              precise             2bed76595591        7 weeks ago         114.6 MB

一旦、IMAGE IDを指定してコンテナ作成&実行してみる。
[root@localhost nginx1]# docker run -d -p 80:80 --name nginx1 164fa62b79b6 /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
44756c2137b2a1fdcf0b3dd06b7a8bb9b4a5b0a41f803cc8da03a5dc6e2d61ac
[root@localhost nginx1]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                NAMES
44756c2137b2        164fa62b79b6        /usr/sbin/nginx -g '   19 seconds ago      Up 18 seconds       0.0.0.0:80->80/tcp   nginx1              
[root@localhost nginx1]# curl localhost:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost nginx1]# 

実行はできたが、index.htmlがコピーされていないorz
よくみてみたら、Dockerfileでindex.htmlのコピー先が間違っていたorz
[root@localhost nginx1]# cat Dockerfile 
FROM ubuntu
MAINTAINER XXXXXXX <xxxx@gmail.com>
RUN apt-get update
RUN apt-get install -y nginx
ADD index.html /usr/share/nginx/html/

×「/usr/share/nginx/html」⚪︎「/usr/share/nginx/html/」

もう一度ビルドしてみたら、ちゃんとイメージができてるっぽい。
[root@localhost nginx1]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
build_nginx         1.0                 aaf400998859        10 seconds ago      231.5 MB
fuji/nginx          latest              fd64b49b28ca        7 weeks ago         231.2 MB
ubuntu              14.10               b8d67033ed07        7 weeks ago         242.4 MB
ubuntu              utopic              b8d67033ed07        7 weeks ago         242.4 MB
ubuntu              14.04.1             1357f421be38        7 weeks ago         192.7 MB
ubuntu              latest              1357f421be38        7 weeks ago         192.7 MB
ubuntu              14.04               1357f421be38        7 weeks ago         192.7 MB
ubuntu              trusty              1357f421be38        7 weeks ago         192.7 MB
ubuntu              12.04               2bed76595591        7 weeks ago         114.6 MB
ubuntu              12.04.5             2bed76595591        7 weeks ago         114.6 MB
ubuntu              precise             2bed76595591        7 weeks ago         114.6 MB

起動&確認
[root@localhost nginx1]# docker run -d -p 80:80 --name nginx1 build_nginx:1.0 /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
21b37014f9657950c88db17d331d9075d5d8b6a9803b7534303cf32ffc2ee881
[root@localhost nginx1]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                NAMES
21b37014f965        build_nginx:1.0     /usr/sbin/nginx -g '   4 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp   nginx1              
[root@localhost nginx1]# curl localhost:80
hello docker
[root@localhost nginx1]# 

ん〜ちゃんとできている^^
参考URL


0 件のコメント:

コメントを投稿