イマドキの環境構築ツール「docker」を使ってみよう!!

今日はキクチです
今回は何かと便利なdockerの利用方法を紹介しようと思います

edaf107dfc6483b5ae78f05951e6d84b

docker for mac のパブリックベータが公開されて何かと盛り上がっていますね

 

dockerとは

dockerはコンテナと呼ばれる仮想化基盤です。仮想マシンに比べて軽量で使い捨てがしやすいというメリットがあります。

仮想マシンはホストOS上でハードウエアを仮想的に再現し、そこにゲストOSを導入して動かす。一方、Dockerのコンテナーは、ホストのOSカーネル上でプロセスをグループ化して分離するもの。1組のプロセス群が、独立したサーバーとして機能する。仮想マシンはゲストOSを自由に選べる一方で、起動が遅く、処理のオーバーヘッドが大きい。それに比べDockerのコンテナーは、ゲストOS(Linuxカーネル)を選べないものの、軽量で起動が速い。加えて、Dockerではテキストファイルにコンテナーの構成を書くだけでサーバーを容易に構築できるので、サーバーを使い捨てても惜しくない。アプリケーションが動作する状態のコンテナーを独自にイメージ化し、複数ユーザーで共有したり、大量のサーバーに配布したりすることも簡単にできる。
引用) ITPro ACTIVE「先進6事例に見るDockerの使い道今ハマる三つの使い道」

 

dockerの使い道

dockerの使い道として、以下のようなことができます

  • 開発環境として使う
  • 本番の環境として使う
  • 開発に使うツールの構築に使う

 

開発環境として使う

dockerはDockerファイルと呼ばれるコンテナこ構成を書いたテキストファイルを渡すだけでチーム内で同じ環境を使うことができるのでとても便利です。

それぞれが開発環境を一から構築する必要がないので、コストの削減になります。

本番の環境として使う

dockerを本番の環境として運用している例もあります。

dockerコンテナはアプリケーションや実行に必要なライブラリ、モジュールなど依存するものを全て含んでいるので、マシンのosに関係なくサービスを動かすことができます。またサーバを移行する際にもコンテナを移動させれば良いというメリットがあります。

 

開発に使うツールの構築に使う

開発に使うツールとしてタスク管理のためのredmineやバージョン管理のためのgitlab(githubのクローン)を用意することがあるかと思います。
そういったときにdockerを使えば簡単に用意することができます。
DockerHubというサイトに構築済みのコンテナが多数公開されており、使う際にはコマンド一発で、gitlabやredmineを使い始めることができます。

dokcerのインストール方法

以下のリンクからダウンロードしてインストールしてください

正直、難しいことは何もありません
Docker Docs

dockerを使った例

dockerを使ってowncloudというオープンソースのクラウドストレージを動かしてみます。
owncloudってのは自前のdropboxみたいなものです。

dockerhubに公開されているofficialのコンテナイメージを使おうと思います。

docker run -d -p 80:80 --name mycloud owncloud 

これだけです。
スクリーンショット 2016-07-22 22.17.22
ローカルにコンテナイメージがなければ、docker hub から勝手にダウンロードして起動してくれます。
スクリーンショット 2016-07-22 22.36.22
起動しました。

http://localhost

にアクセスすればowncloudを使い始めることができます。

しかし、コンテナはデータを保持しておくことができないので
なにかの拍子にコンテナが停止してしまうと保存しておいたデータが消えてしまいます。

一度、コンテナを落として

docker rm -f mycloud

そこで以下のように-vをつけてホストマシンの好きな領域をowncloudにマウントして使います

docker run -d -p 80:80 --name mycloud -v [データを保存しておきたい場所のpath]:/var/www/html/data owncloud 

こうすることで保存したデータはホストマシンに保持されます。

いかがでしょうか、dockerをつかえば簡単にいろいろなものが構築できて便利ですよ!
皆さんも使い方を覚えて、開発に役立ててみてください!