“Docker”を使ってみよう〜Ruby on Rails編〜

2016.12.01

セキュリティ対策

技術部にてインフラ周りを担当している飯田です。

過去2回に引き続き「社内の誰もがPC内で完結する攻撃遮断くんの管理画面」を目指してローカル開発環境にDocker適用を行っていこうと思います。

第01回: コンテナ型仮想化ソフトウェア”Docker”を使ってみよう〜ローカル適用編〜
第02回: “Docker”を使ってみよう〜コンテナ稼動編〜

はじめに

前回まではDockerのバージョンは”1.12.1″でしたが、現在は”1.12.3″を使用して構築・確認をしています。

$ docker version
Client:
Version:      1.12.3
API version:  1.24
Go version:   go1.6.3
Git commit:   6b644ec
Built:        Wed Oct 26 23:26:11 2016
OS/Arch:      darwin/amd64

Server:
Version:      1.12.3
API version:  1.24
Go version:   go1.6.3
Git commit:   6b644ec
Built:        Wed Oct 26 23:26:11 2016
OS/Arch:      linux/amd64
$

コンテナ

前回までにDockerのインストール、MySQL/ElasticsearchのDocker適用までを行ってきました。

1. MySQL
2. Elasticsearch
3. Ruby on Rails
4. 監視センター(攻撃遮断くん/攻撃見えるくん)

上記での2番までを終えています。今回は”Ruby on Rails”で開発されている攻撃遮断くんの管理画面をDocker適用しようと思います。

Ruby コンテナ

前述の通り、攻撃遮断くんの管理画面は”Ruby on Rails”で実装されています。“rails”コンテナもDockerHub上には存在するのですが、”DEPRECATED”の文字が確認できるので“ruby”コンテナを使用します。Rubyのバージョンを合わせてコンテナイメージを取得しました。

$ docker pull ruby:2.2

続いてRubyコンテナを起動しますが、ソースコードをコンテナ内で使用できるように”-v”オプションを使用して、ローカルに`git clone`しているディレクトリをコンテナにマウントさせます。下記コマンドはソースコードのあるディレクトリにて実行しています。

$ docker run -ti -v `pwd`:/src ruby:2.2 bash

この後はコンテナ内で作業を行います。まずは依存しているライブラリを取得します。

# cd /src
# bundle install

一旦ここまでのコンテナを残しておきましょう。コンテナからデタッチし、コミットします。コンテナをコミットするにはコンテナのIDが必要なので事前に確認もしておきます。新規で作成するコンテナイメージの名称は”shadan-kun”としておきます。

$ docker ps -a
CONTAINER ID        IMAGE ...
ee38b10bcd9e        ruby:2.2 ...
$
$ docker commit ee38b10bcd9e shadan-kun
sha256:da137...
$

コミットも正常にできたので、すでに稼動させているrubyコンテナは削除してしまいます。

$ docker stop ee38b10bcd9e
$ docker rm ee38b10bcd9e

先ほどコミットしたコンテナイメージで再度コンテナを起動します。

$docker run -ti -v `pwd`:/src -p 3000:3000 shadan-kun bash

ローカルからのアクセスを許可する為に”-p 3000:3000″というオプションを追加しています。コンテナイメージは先ほど作成した”shadan-kun”に変更されています。

続いて、前回起動したMySQL, Elasticsearchのコンテナを使用するように設定を変更します。今回は各コンテナのIPを調べて設定をしてしまいました。設定ファイル等を書き換え、MySQLとElasticsearchに初期データを投入し、Railsサーバを起動します。

root@d50633be5e72:/src# rails server -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-11-30 09:16:19] INFO  WEBrick 1.3.1
[2016-11-30 09:16:19] INFO  ruby 2.2.6 (2016-11-15) [x86_64-linux]
[2016-11-30 09:16:19] INFO  WEBrick::HTTPServer#start: pid=7 port=3000

ブラウザから”localhost:3000″にアクセスすると下記のように正しく表示されました。



「攻撃遮断くんの管理画面の表示」まではできました。ですが「社内の誰もがPC内で」にはまだほど遠い状態です。
次回はこの手作業で構築し起動させているRailsサーバをコンテナイメージ化しようと思います。`docker run`しただけの状態でRailsサーバが起動するまで、をお届けする予定です。


 

CyberSecurityTIMESを運営している弊社サイバーセキュリティクラウドでは、Webセキュリティ対策のソフトウェア「攻撃遮断くん」を提供しております。専門家によるサポートも充実しております。お気軽にお問合せください。

「攻撃遮断くん」の詳細資料は、こちらからダウンロード頂けます。

 

サイバーセキュリティ クラウド型WAF 攻撃遮断くん Web Application Firewall
https://www.shadan-kun.com/

 
テック


  • 国内商用Webサイトが受けやすいサイバー攻撃とは?|サイバー攻撃の統計データから傾向を読み解く|今すぐ無料で資料をダウンロード
  • 御社のセキュリティ対策は本当に大丈夫ですか?約80%の企業が対策不足と言われています。Webセキュリティをいますぐ確認!3つのチェックポイント。今すぐ無料で資料ダウンロード