◎このシステムについて

ブラウザとDockerをつなぎ、ブラウザで入力したプログラムをDocker側で
実行させ、結果をブラウザで表示させるシステム。

仮想環境でプログラムを実行するため、仮に悪意のあるプログラムを実行させたとしても
問題が起こらないよう隔離した状況で実行することができる。

※ システムを使用する場合のセキュリティ上の注意 ! ※

現在はあらゆるDockerコマンドが通る状態なため、利用者の意図しないコマンドまで通してしまう状態です。 安全のためシステムの利用時は他のWebサイトを開かないようにし、Webサイトを開くならきちんと利用後の処理を行ってからにするよう注意してください。

〇Dockerについて

Dockerとは Docker社が提供するコンテナ型の仮想化 ソフトウェアの一つである。
仮想環境を利用することで、例えば開発で使っているハードウェア上で仮想的にサーバを動作させ物理的なサーバを削減できる点や、ハード ウェアに依存せず互換性があるなどの利点がある。
また コンテナ型仮想化以外にも、ホスト型、ハイパーバイザー 型、主のこれら二つがあるが、これらと比較してコンテナ 型仮想化は、
オーバーヘッド(仮想化を行うために必要になる、無駄なCPUリソース/ディスク容量/メモリ使用量 など)が少ないため、軽量で高速で動作するという特徴がある。

〇nginxについて

ブラウザからDockeにそのままだと同一生成元ポリシー(Same-Origin Policy)によりアクセスできないため、
プロキシサーバとして使用する nginx の設定ファイルを特定のヘッダが含まれる場合にリクエストを許可するようにし、
安全にクロスドメインアクセスをするための CORS(Cross-Origin Resource Sharing)の仕様を満たすようにした。

●準備

○dockerのインストール

https://www.docker.com/products/docker-toolboxよりdockertoolboxをインストール

インストールができたらDocker Quickstart Terminalを起動

$ docker run gcc

$ docker run sequenceiq/socat

(最初の $ はプロンプト、以下同様。)

を実行し、必要なimageを取ってくる (少し時間がかかります)

また $ docker images で今あるイメージを確認できる (確認してみて gccとsequenceiq/socat があればOKです)

○nginxのインストールと設定

http://nginx.org/en/download.htmlより

Stable version にある nginx/Windows-X.X.X をダウンロード

解凍したフォルダを適当な場所に移動(例: C:\nginx-X.X.X)

設定ファイル中のnginx.confを書き換える(場所は nginx-X.X.X -> conf -> nginx.conf)

nginx.confのように変更

●利用時

○Docker

Docker Quickstart Terminalを起動

$ $(docker run sequenceiq/socat)を実行

○nginx

nginx.exeを実行

プログラムを入力後

create -> send_file -> コンパイル -> 実行 -> receive_file の順にボタンを押す

○各ボタンの説明

create : Dockerとブラウザを接続(idが表示されたら成功)

send_file : プログラムファイルをDocker側に送る

コンパイル : Docker側でプログラムをコンパイル

実行 : Docker側でコンパイルしたプログラムを実行

receive_file : 実行により作成された画像をブラウザ側に取ってきて表示

●利用後

Docker Quickstart Terminalで

$ docker stop $(docker ps -a -q)

でDocker管理のコンテナをまとめて停止(stop)させ

$ docker rm $(docker ps -a -q)

でDocker管理のコンテナで停止中(stop)のコンテナを一括削除