EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

Dockerについて

初めまして、EatSmartの新人エンジニアが初ブログを更新したいと思います。
入社してちょうど1ヶ月が経ちました。

現在、社内向けのツールを開発中でその際にdockerで仮想環境を構築しました。
初めてDockerを動かすことになったので調べた内容をまとめてみました。


Dockerとは

コンテナ型の仮想環境を構成、管理するソフトウェアでLinuxカーネルが持つ「コンテナ」機能などを使って実行環境を他のプロセスから隔離しその中でアプリケーションを動作させる技術のこと

VMVMwareのようなサーバー仮想化との違いは扱う単位がマシンではなくプロセスであること

サーバー仮想化ではホストマシン上でゲストマシンが動き、ゲストマシン内で様々なプロセスが動きます。一方のコンテナ型の仮想化ではホストOS上にコンテナという隔離された空間が作成されその中でプロセスが実行されます

Dockerマシンは何が良いのか

■軽量で高速に起動、停止などが可能であること

DockerはLinuxのコンテナ技術を使ったものでよく仮想マシンを比較させます、Virtualboxなどの仮想マシンではホストマシン上でハイパーバイザを利用しゲストOSを動かしその上でミドルウェアなどを動かす。それに対しコンテナはホストマシンのカーネルを利用しプロセスやユーザーなどを隔離することであたかも別のマシンが動いているかのように動かすことができる

■安定した開発を進めたり、リリースサイクルの改善に役立つ

コード化したもの(Dockerfile)を構成管理し、それをCIツール(JenkinsやCircleCI)でビルド(Dockerイメージの作成)、デプロイ(コンテナの起動)、環境テスト(Serverapec)、画面試験(Selenium)を毎日実行すれば環境面の確認も含めて安心して開発を進められるようになる

Docker登場の背景

アプリ開発者にとってハードウェアの調達やメンテナンスは開発以外での作業工程が増え足かせになっていた
サービスモデルの一つであるlaasをより効率よく活用するために必要最低限のリソースでアプリケーションを実行できる環境を提供するコンテナ型サービスが注目を集めている

Dockerの実行環境について

今回はLinux CentOS 7 64bitを使用しましたがその他にも
Docker for Windows / Docker for Mac などのソフトウェアが開発されている


導入 コマンド

# yum install docker
#chkonfig docker on
#service docker start

Docker操作の基本
Dockerサーバ(コンテナ実行用のエンジン)とクライアント(管理ツール)に分かれたツールである

イメージの取得 → コンテナの起動 → コンテナの停止 → イメージの作成 → コンテナの削除 → イメージの削除 といった順で操作していきます



DockerHubで管理

作成したコンテナイメージはDockerHubといったコンテナイメージ登録や共有ができるサービスサイトで管理ができる。このようなサイトにDockerが構成されたサーバーなどの環境からアクセスできれば作成したコンテナイメージをアップロードやダウンロードし利用できる


参考資料

http://docs.docker.jp/
http://knowledge.sakura.ad.jp/tech/2210/