コンテナで作る開発環境
@tabimoba
CodeIgniter Night (2016/11/04)
大野 智之@tabimoba
• コミュニティ• IDCFクラウドユーザー会• NetCommons(コモンズネット )など
• 好きなフレームワーク• CodeIgniter
• 本内容は発表者個人の見解であり、所属組織の見解を表すものではありません。
自己紹介
今回は
ではなく
コンテナの話をします
みなさまにお聞きします
VirtualBox 使っていますか?
Vagrant 使っていますか?
IaaS や VPS 使っていますか?
IaaS や VPS をケチケチと効率的に使いたいと思ったことありませんか?
メモリが足りなくて仮想マシン( VM )が追加出来なくて
辛いと思ったことありませんか?
メモリ 4GB の MacBookAir を買って失敗したと思ったことありませんか?
Atom な Windows タブレットを開発環境にしたいと思ったことありませんか?
コンテナを使いましょう
• コンテナなのでコンテナの作成、起動が早い• メモリやストレージが無駄なく利用できる
コンテナのメリット
VM1 VM2 VM3
Container1
Container2Container3
仮想マシン( 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 -aLinux 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-releaseCentOS release 6.8 (Final)
簡単ですね!
コンテナいかがでしょうか?
LXD で素晴らしいコンテナライフを!