コンテナ型ハイパーバイザー「LXD」入門
2月27日のオープンソースカンファレンス 2016 Tokyo/Springに行ってきた!つづき
コンテナ型ハイパーバイザー「LXD」入門
をメモメモ
【ツール】
LXD(れっくすでぃー)について
・Go言語製のコンテナが他ハイパーバイザー
LXCを使って複数のホスト上の複数のコンテナを管理する仕組み
クライアントサーバーモデル
設定管理システム追加
イメージ管理システム
(クライアント)マルチプラットフォーム対応
OpenStack Nova向けプラグイン
LXC:Linuxのコンテナ機能を使うためのインターフェース
・Docker,systemdでも使われているカーネルのnamespaceやcgroupsなどを使用
・コンテナと呼ばれる軽量な仮想環境を構築
・CPUの仮想化支援機能が不要
・KVMに比べると、軌道が高速でイメージサイズが小さい
・各種言語向けのバインディングが存在
・Linuxでしか動作しない
→詳しいことはLXCで学ぶコンテナ入門ー軽量仮想化環境を実現する技術
Docker
・主にアプリケーションコンテナを作る
・1コンテナ1プロセス
・一度作ったら中身を変えない
LXC
・主にシステムコンテナを作る
1コンテナにinit以下のフルシステムが動く
・コンテナ内部にログインして作業を行う
上記はあるまで一般論で異なる使い方も可能
LXCの不満点
・何をするにしても管理者権限が必要
・同一ホストのコンテナしか操作できない
・コンテナの施ty亭を変更する方法が分かりにくい
・複数のホスト間でコンテナインスタンスを共有しづらい
LXCの昨日よりはユーザー向けのインターフェースに問題がある
→LXCのハイパー倍剤を作るLXD
改めてLXDについて
・LXCを使って複数のホスト上の複数のコンテナを管理する仕組み
・クライアントサーバーモデル
サーバー、コンテナを管理するlxd
lxdコマンドは管理権限が必要
lxcグループに入っていればいい
サブコマンド方式で統一性
ネットワーク透過性
REST APIの提供
設定管理システム
コンテナの設定をsqlightに
イメージ管理システム
非特権システムコンテナを簡単に構築
マイグレーション
他ホスト上にも
マルチプラットフォーム対応
Windows/Macからubuntu上のコマンドを操作できる
OpenStack Nove向けプラグイン
KVMより一杯のもの立ち上げられる
非特権システムコンテナ
rootがUID=0ではないコンテナ
特権コンテナではホストとUIDを共有する
非特権コンテナは、user namespaceを使ってマッピングしている
コンテナの中にコンテナ作る場合は、親コンテナは特権コンテナ
LXD,LXCに向いている仕事
・KVMやVMWあれ、Xenが行っていたシステムの仮想化
・リソースが少ない環境での仮想化
・組み込みでも使える(ubuntu Phone)
むいていない仕事
・ホスト、ゲストで異なるカーネル
・すでにDocker資産がある
LXD入門
・ubuntuで動かす
・2種類0.x系と2.0系がある
・0,x系はこれまでのリリース版
・2.0系は次期正式リリースとして開発中
・unbuntu 16.04 LTSでは2.0が入る
・今から評価するなら2.0を使ったほうがいい
必要なもの
・ホストマシン ubuntu14.04以上(ZFS使うなら16.04以上)
クライアント ubuntu14.04以上
・デモサービスある
インストール
・ppa追加
・update
・フルアップグレード
・apt install
・newgrp lxd
ZFSについて
最初の一歩
sudo lxd init
イメージの取り込み
lxd-images import ubuntu --alias ubuntu
lxc image list
イメージの起動
lxc launch ubuntu first
ホストとゲストのプロセスの状態
lxc exec first -- ps axjf
--のあとに実行したいプロセス
リソースの制限
lxc config set first 制限したい項目
スナップショット
lxc snapshot first clean
lxc restore first clean
インスタンスをイメージに
lxc image list
lxc stop first
lxc publish first --alias first-base
イメージリストを他に
ライブマイグレーション
2月27日のオープンソースカンファレンス 2016 Tokyo/Springに行ってきた!つづき
コンテナ型ハイパーバイザー「LXD」入門
をメモメモ
【ツール】
LXD(れっくすでぃー)について
・Go言語製のコンテナが他ハイパーバイザー
LXCを使って複数のホスト上の複数のコンテナを管理する仕組み
クライアントサーバーモデル
設定管理システム追加
イメージ管理システム
(クライアント)マルチプラットフォーム対応
OpenStack Nova向けプラグイン
LXC:Linuxのコンテナ機能を使うためのインターフェース
・Docker,systemdでも使われているカーネルのnamespaceやcgroupsなどを使用
・コンテナと呼ばれる軽量な仮想環境を構築
・CPUの仮想化支援機能が不要
・KVMに比べると、軌道が高速でイメージサイズが小さい
・各種言語向けのバインディングが存在
・Linuxでしか動作しない
→詳しいことはLXCで学ぶコンテナ入門ー軽量仮想化環境を実現する技術
Docker
・主にアプリケーションコンテナを作る
・1コンテナ1プロセス
・一度作ったら中身を変えない
LXC
・主にシステムコンテナを作る
1コンテナにinit以下のフルシステムが動く
・コンテナ内部にログインして作業を行う
上記はあるまで一般論で異なる使い方も可能
LXCの不満点
・何をするにしても管理者権限が必要
・同一ホストのコンテナしか操作できない
・コンテナの施ty亭を変更する方法が分かりにくい
・複数のホスト間でコンテナインスタンスを共有しづらい
LXCの昨日よりはユーザー向けのインターフェースに問題がある
→LXCのハイパー倍剤を作るLXD
改めてLXDについて
・LXCを使って複数のホスト上の複数のコンテナを管理する仕組み
・クライアントサーバーモデル
サーバー、コンテナを管理するlxd
lxdコマンドは管理権限が必要
lxcグループに入っていればいい
サブコマンド方式で統一性
ネットワーク透過性
REST APIの提供
設定管理システム
コンテナの設定をsqlightに
イメージ管理システム
非特権システムコンテナを簡単に構築
マイグレーション
他ホスト上にも
マルチプラットフォーム対応
Windows/Macからubuntu上のコマンドを操作できる
OpenStack Nove向けプラグイン
KVMより一杯のもの立ち上げられる
非特権システムコンテナ
rootがUID=0ではないコンテナ
特権コンテナではホストとUIDを共有する
非特権コンテナは、user namespaceを使ってマッピングしている
コンテナの中にコンテナ作る場合は、親コンテナは特権コンテナ
LXD,LXCに向いている仕事
・KVMやVMWあれ、Xenが行っていたシステムの仮想化
・リソースが少ない環境での仮想化
・組み込みでも使える(ubuntu Phone)
むいていない仕事
・ホスト、ゲストで異なるカーネル
・すでにDocker資産がある
LXD入門
・ubuntuで動かす
・2種類0.x系と2.0系がある
・0,x系はこれまでのリリース版
・2.0系は次期正式リリースとして開発中
・unbuntu 16.04 LTSでは2.0が入る
・今から評価するなら2.0を使ったほうがいい
必要なもの
・ホストマシン ubuntu14.04以上(ZFS使うなら16.04以上)
クライアント ubuntu14.04以上
・デモサービスある
インストール
・ppa追加
・update
・フルアップグレード
・apt install
・newgrp lxd
ZFSについて
最初の一歩
sudo lxd init
イメージの取り込み
lxd-images import ubuntu --alias ubuntu
lxc image list
イメージの起動
lxc launch ubuntu first
ホストとゲストのプロセスの状態
lxc exec first -- ps axjf
--のあとに実行したいプロセス
リソースの制限
lxc config set first 制限したい項目
スナップショット
lxc snapshot first clean
lxc restore first clean
インスタンスをイメージに
lxc image list
lxc stop first
lxc publish first --alias first-base
イメージリストを他に
ライブマイグレーション