VMwareにCoreOSをインストールしてnginxでサーバーを起動してみる
タイトルの通り。
現在管理しているアプリケーションを将来的にはDockerに乗せて運用したいと思っていたので、CoreOSの練習としてインストールしてみます。
VMにインストールするところまでは、
Docker1.0.0を記念して、ISO imageからCoreOSをインストールしてみた。
のブログを参考にして行いました。ここまでは詰まるところはありませんでした。
次に、CoreOS上にDockerコンテナを作成します。
まずはイメージをpullしてきます。今回はCentOSを使いました。
core@localhost ~ $ docker pull centos:latest
Pulling repository centos
0c752394b855: Download complete
511136ea3c5a: Download complete
34e94e67e63a: Download complete
とりあえずこれを起動してみます。
core@localhost ~ $ docker run -it --name test1 centos /bin/bash
bash-4.1#
ちゃんとbashが起動しました。
これに、nginxをインストールしてみます。
nginxのリポジトリを登録
bash-4.1# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.unaiUS: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ########################################### [100%]
1:nginx-release-centos ########################################### [100%]
yumでnginxをインストール
bash-4.1# yum -y install nginx
バージョン確認
bash-4.1# nginx -v
nginx version: nginx/1.6.0
nginxがインストールされました。
これを、VMの外から見れるようにします。
とりあえず今起動中のdockerコンテナを停止します。
今、nginxをインストールしたコンテナ(test1)から、新しいイメージnginx1を作ります。
コンテナを確認
core@localhost ~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7db044814c26 centos:latest /bin/bash 14 minutes ago Exited (130) 2 seconds ago test1
このコンテナから新しいイメージを作成
core@localhost ~ $ docker commit 7db044814c26 nginx1
d92fb22f3ebc2ecf9c0be4e12cb7793640f7ffbc9eb525e483bdb3aaacb20cf3
イメージを確認すると、
core@localhost ~ $ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
nginx1 latest d92fb22f3ebc 48 seconds ago 187.3 MB
centos latest 0c752394b855 4 weeks ago 124.1 MB
最初にpullしたcentosとは別に、nginx1というイメージができています。
ではこのnginx1から、nginxを実際に起動するためのコンテナを作成します。
core@localhost ~ $ docker run -t -i -p 8080:80 --name test2 nginx1 /bin/bash
bash-4.1#
-pは、ホストとコンテナの間のポートのバインドを指定するためのもので、この場合はホストの8080ポートとコンテナの80ポートがバインドされています。
nginxを起動
bash-4.1# nginx
そして、このコンテナからデタッチします。ctrl^p ctrl^qでデタッチできます。
コンテナを確認
core@localhost ~ $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
031c0904aeb4 nginx1:latest /bin/bash 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp test2
コンテナtest2は起動中で、ポート8080が80にバインドされていることがわかります。
この状態でCoreOSを起動しているVMのアドレスにアクセスしてみると・・・・?
起動しているnginxにアクセスすることが出来ました!
本来ならば、nginx1からtest2を作る時には-iによる対話起動でなく、-dでバックグラウンド起動させたかったのですが、そうすると次にattachした時にbashのコンソールが出てこなかったりしてとても悩みました。
ちょっとまだ不安定で、本番環境で使うにはまだまだかかりそうですが、とても面白い技術だなーと思いました。ちょっとずづ勉強していこうと思います。
参考にしたページ
Docker1.0.0を記念して、ISO imageからCoreOSをインストールしてみた。
Dockerでnginxサーバー立ててみた。あとDockerの使い方とか。
いまさら聞けないDocker入門