Hai Adachinです。
今回はdocker-machineにNginxをインストールして、テスト画面を表示させたいと思います。
docker-machineにこだわらず、サーバにdockerをインストールしている環境でも基本は使い方同じです。
そもそもパッケージ管理は全て「Dockerfile」を使用してnginxなりmysqlなりインストールするわけです。
自動化のレシピのようなイメージ。
書き方もとても簡単なのでご紹介します。
構築するまでめちゃくちゃ軽いし、早いです。
■Dockerとコンテナの仕組み
ちょっとDockerとコンテナのネットワークの図を作ってみました。
Dockerホスト側がルーターというイメージでコンテナ側はポート開放なイメージです。
コンテナには勝手にIP振られます。
もちろんコンテナにssh系をインストールすれば、dockerホストからコンテナへsshもできます。
■docker Imageの確認
1 2 3 4 | docker@test-docker:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 6 5a328db7d3ae 4 days ago 576 MB centos 7 d0e7f81ca65c 6 days ago 196.6 MB |
とりあえず前回のブログでImageをダウンロードしたのでcentos:6を使いましょう
■Dockerfileの作成
1 2 3 4 | $ cd $ mkdir dockerfile_nginx $ cd dockerfile_nginx $ vi Dockerfile |
# Getting Base Image | |
FROM alpine:latest | |
RUN apk update vim tmux git sudo perl automake cmake qt openssh | |
RUN apk add –no-cache –virtual update pcre-dev openssl-dev | |
RUN apk add –no-cache –virtual build-dependencies build-base curl | |
RUN apk add nginx | |
EXPOSE 80 443 | |
# echo running | |
CMD ["echo", "running!"] |
# Getting Base Image | |
FROM centos:6 | |
# start install nginx | |
RUN yum update -y | |
RUN yum install -y vim | |
RUN yum install -y curl | |
RUN yum install -y epel-release | |
RUN yum install -y sendmail | |
RUN yum install -y cronie-noanacron | |
RUN yum install -y ntp | |
RUN rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm | |
RUN yum install -y nginx | |
RUN /etc/init.d/nginx start | |
RUN chkconfig nginx on | |
# start install mysql | |
RUN yum -y install mysql-server | |
RUN /etc/init.d/mysqld start | |
RUN chkconfig mysqld on | |
# start install php | |
RUN yum -y install php | |
RUN yum -y install php-mysql | |
# start install ssh | |
RUN yum install -y openssh-server | |
RUN yum install -y openssh-clients | |
RUN sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config | |
RUN mkdir ~/.ssh | |
RUN chmod 700 ~/.ssh | |
RUN touch ~/.ssh/authorized_keys | |
RUN chmod 600 ~/.ssh/authorized_keys | |
# Port | |
EXPOSE 22 80 8080 3306 | |
# echo running | |
CMD ["echo", "running!"] |
保存できたらdocker自体のIPを確認しましょう!
1 2 | docker@test-docker:~/dockerfile_nginx$ ip route |grep eth1 192.168.99.0/24 dev eth1 proto kernel scope link src 192.168.99.100 |
・ビルド
こんな名前にしてみました
1 | $ docker build -t adachin/nginx_centos6:latest . |
・インストールを待つ
1 | CMD ["echo", "running!"] と出ればOK |
・確認
できてる
1 2 3 4 5 | $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE adachin/nginx_centos6 latest 4e0eee40ab6a 2 minutes ago 609.5 MB centos 6 5a328db7d3ae 4 days ago 576 MB centos 7 d0e7f81ca65c 6 days ago 196.6 MB |
・ビルドしたコンテナを起動する
1 2 | $ docker run -it -p 8080:8080 adachin/nginx_centos6:latest /bin/bash [root@da87aa58783f /]# |
・webサイトで確認
でけた。
■まとめ
次回はMysqlコンテナやDocker HubというGithubみたいな
自分が作ったコンテナをpullしてそれを自分のdockerからcloneしてすぐに
構築できるやり方をブログします。
しかし、早い・・・
vagrant立ち上げるのが遅いからもう使わない・・・
■追記
そのままコンテナ抜けると設定したものが消えるので必ずcommitしましょう!
1 2 3 4 | ・保存 # docker commit -m "fix nginx" 現在動いているID(docker psで) adachin/nginx6 ・古いコンテナ削除 # docker rmi -f 古いリポジトリ名/古いID名 |
参考:http://qiita.com/kasaharu/items/d4654193d75c67d65226
0件のコメント