Docker ? Packer ? 何が違うの?と個人的にわけがわからなくなっていたのでまとめてみた
インフラ系技術の 3 つのレイヤー
-
Orchestration
- アプリケーションのデプロイ
- Capistrano
-
Configuration
- ミドルウェアレベルの設定
- Chef, Puppet
-
Bootstrapping
- OS のインストールにあたる領域
- Docker, Vagrant, Packer
-
今回は、Configuration ツールと Bootstrapping ツールの違いをまとめる
Bootstrapping Tool
Docker
- Linux コンテナの内部でアプリケーションを動作させるためのツール
- Go 言語で記述されている
- 環境構築は Dockerfile と呼ばれるファイルでコード化できる
- コンテナ型仮想化を提供するツール
- イメージの作成から実行まで
- AWS の AMI に相当
- ただし、AMI は AWS 上でのみ動かせるが、 Docker イメージは Docker が動く Linux マシンならどこでも動作する
- 個人的に使ってみた時のまとめ
Packer
- VM のイメージを作成するツール
- Docker に近い
- ただし、Docker は Docker 用のイメージを作成するのに対し、 Packer は Docker を含め、Amazon AMI や Vagrant Box, Virtualbox など複数のプラットフォームに対応できる
Vagrant
- 仮想マシンの作成、環境設定を自動化するツール
- 仮想マシンのイメージ(Vagrant Box) はすでに用意しているのを前提に、マシンを立ち上げるのに特化している
- 個人的に使ってみた時のまとめ
Configurarion Management Tool
Chef
- サーバの設定やソフトウェアのインストールを自動化する管理ツール
- Recipe と呼ばれる設定ファイルは Ruby スクリプトになっている
- 個人的に使ってみた時のまとめ
Puppet
- サーバの設定やソフトウェアのインストールを自動化する管理ツール
- Chef に近い
- Chef より歴史は古い
Ansible
- Chef や Puppet に近い
- Python 製
- Push 型 : ホスト側にのみインストールすればよい (Chef では、ゲスト側にもインストールする必要がある)
- Chef と比較して構成がシンプル