コンテナで作る
開発環境
@tabimoba
CodeIgniter Night (2016/11/04)
大野 智之
@tabimoba
• コミュニティ
• IDCFクラウドユーザー会
• NetCommons(コモンズネット)
など
• 好きなフレームワーク
• CodeIgniter
• 本内容は発表者個人の見解であり、
所属組織の見解を表すものではありません。
自己紹介
今回は
ではなく
コンテナの話をします
みなさまにお聞きします
VirtualBox使っていますか?
Vagrant使っていますか?
IaaSやVPS使っていますか?
IaaSやVPSを
ケチケチと効率的に使いたい
と思ったことありませんか?
メモリが足りなくて
仮想マシン(VM)が追加出来なくて
辛いと思ったことありませんか?
メモリ4GBのMacBookAirを買って
失敗したと思ったことありませんか?
AtomなWindowsタブレットを
開発環境にしたいと思ったことありませんか?
コンテナを使いましょう
• コンテナなのでコンテナの作成、起動が早い
• メモリやストレージが無駄なく利用できる
コンテナのメリット
VM1 VM2
Container1
Container2
Container3
仮想マシン(VM)の場合 コンテナの場合
VMごとにメモリ、
ストレージを事前に
割り当てて専有しておく
必要がある
割り当てたメモリや
ストレージが全て
消費されるとは限らない
起動可能なVM数はメモリ、
ストレージの容量に依存する
(物理メモリ以上のメモリ容量
をVMに割り当てられない)
全てのコンテナでメモリ、
ストレージを共有する
実質無制限でコンテナ、
ストレージを起動可能
メモリの少ない環境でも
複数のコンテナを起動す
ることができる
コンテナといえば
LXD
LXDで作る
開発環境
@tabimoba
CodeIgniter Night (2016/11/04)
• コンテナハイパーバイザー(LXCのラッパー)
• Ubuntu 14.04LTS以降で利用可能
• Dockerと共存可能
LXDとは
• init(upstart)やsystemd,rcスクリプトがそのまま
(VMと同様に)動く
• いつものVMと同じ勝手でコンテナが扱える
• Dockerfileのような仕組みは持たない
• システムの起動処理はsystemd,rcスクリプトに任せれば良い
• 構成管理的なものは、Ansible等を利用すれば良い
• モジュールあります
Dockerとの違い
LXDを利用するには
Ubuntuをインストール
パッケージのインストール
# apt install lxd bridge-utils
LXD初期設定
#lxd init
これだけで使い始められます
これだけ覚えればすぐ使えるLXD
コンテナの作成
▽ CentOS 7
$ lxc launch images:centos/7/amd64 -c security.privileged=true
▽ CentOS 6
$ lxc launch images:centos/6/amd64
▽ Ubuntu 14.04
$ lxc launch ubuntu:14.04
▽ Ubuntu 16.04
$ lxc launch ubuntu:16.04
コンテナ一覧表示
# lxc list
+---------------+---------+---------------------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+---------------+---------+---------------------+------+------------+-----------+
| fast-ghoul | RUNNING | 10.238.76.9 (eth0) | | PERSISTENT | 0 |
+---------------+---------+---------------------+------+------------+-----------+
| hogecontainer | RUNNING | 10.238.76.42 (eth0) | | PERSISTENT | 0 |
+---------------+---------+---------------------+------+------------+-----------+
コンテナの起動・停止
■コンテナの起動
$ lxc start <Container name>
■コンテナの停止
$ lxc stop <Container name>
コンテナのシェルを利用する
# lxc exec hogecontainer /bin/bash
[root@hogecontainer ~]# uname -a
Linux hogecontainer 4.2.0-36-generic #42~14.04.1-Ubuntu SMP
Fri May 13 17:27:22 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@hogecontainer ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
簡単ですね!
コンテナいかがでしょうか?
LXDで
素晴らしいコンテナライフを!

コンテナで作る開発環境 (20161104 CodeIgniter Night)