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 件のコメント:
コメントを投稿