VagrantとDockerの理解がどうも曖昧だったので整理するために、それぞれどうゆうものなのかをまとめました
Vagrant
Vagrantとは、違う環境に移行可能な開発環境を簡単に構築・管理し、配布することができる仮想開発環境構築ソフトウェア。仮想マシンの構築手順を'Vagrantfile'という設定ファイルに記述する。
VagrantのパッケージにはRubyの実行環境が含まれているので、Rubyをインストールしなくても使用可能。
VirtualBoxやVMWareといった仮想環境の上に仮想マシンを構築して利用する。
*1.0.x系はrubygemsでも公開していたが、現行ではパッケージからインストール形式を取っている
公式サイト
主要なコマンド
Vagrantfileに記述した設定に従い仮想マシンを起動
$ vagrant up
- 仮想マシンにSSHログイン
$ vagrant ssh
- 仮想マシンの状態を確認
$ vagrant status
- 仮想マシンを停止
$ vagrant halt
- 仮想マシンを削除
$ vagrant destroy
- ssh_configを保存(出力)
$ vagrant ssh-config >> ~/.ssh/config
Docker
Docker Inc. がオープンソースで開発しているコンテナ型仮想化技術、ソフトウェア。
Dockerfileに設定を記述していく。
公式サイト
コンテナとは(LXC)
一つのホスト上で複数の隔離されたLinuxシステム(コンテナ)を走らせる、OSレベルの仮想化ソフトウェア。
VMに比べ、消費リソースが少い、起動が早い、オーバヘッドが少いというメリットがある。
Docker Hub
Dockerイメージの保存、共有が出来るサービス。
docker pullコマンドでダウンロードが出来る
https://hub.docker.com/
主要なコマンド
- Dockerイメージのダウンロード
$ docker pull <イメージ名>:<タグ名>
- イメージの一覧
$ docker images
- コンテナの実行
$ docker run <オプション> <--name コンテナ名> <イメージ名>:<タグ名>
- コンテナの一覧
$ docker ps -a
- コンテナの停止
$ docker stop <オプション> <コンテナ名>
- コンテナの起動
$ docker start <コンテナ名>
- コンテナの強制終了
$ docker kill <コンテナ名>
- コンテナの削除
$ docker rm <コンテナ名>
- イメージの削除
$ docker rmi <イメージ名>
プロビジョニングツール
プロビジョニングとは
provisioning : [供給/準備/設備/引き当て(すること)]
ネットワーク設備やシステムリソースなどを事前に用意しておき、ユーザーの要求に応じてそれを割り当てて迅速にサービスの提供を行うこと。
Puppet
ruby製、独自の宣言型言語によりシステムのあるべき状態を管理する。
参考 : http://gihyo.jp/admin/serial/01/puppet/0001?page=2
Chef
Puppet同様、サーバ管理ツールで設定ファイルをrubyで記述できる。
cookbook,Recipe等独自の概念を持っている
Chefについては気力がある時に、またまとめようとおもいます。。。
2015-06-10 追記
Dockerについてブログにまとめました。
http://carefree-se.hatenablog.com/entry/2015/06/08/001107
こちらの内容 + Dockerfileについても触れています