Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08

24
Ubuntuとコンテナ技術 What is LXD? and Why? Nobuto Murata <[email protected]> 2015-12-08

Transcript of Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08

Ubuntuとコンテナ技術What is LXD? and Why?

Nobuto Murata <[email protected]>

2015-12-08

We are the company behind Ubuntu.

EMPLOYEES

London

BostonShanghai

Taipei

600+COUNTRIES

30+FOUNDATION

2004

Beijing

LXD

The Linux container hypervisor

1

2

3

LXD (“lex-dee”)

Secure by design(セキュア)非特権コンテナ、リソースの制限、などなどScalable(スケーラブル)ノートPC上での検証から数千台規模の物理マシンクラスタまでIntuitive(直感的)シンプルかつ明快なAPI 、コマンド

ubuntu.com/lxd

linuxcontainers.org/lxd

github.com/lxc/lxd

高速、高集積かつセキュアなコンテナマネジメントシステム

● “Docker is an amazing application delivery mechanism, which may change the world of devops forever”

● “LXD and Docker share some underlying kernel capabilities”

And Docker?

安心してください、どちらも使えます

あたかも物理マシンみたいに使うコンテナ“ ”システムコンテナ がLXDの特徴アプリケーションコンテナとは目的や使われ方が異なる

1 2 3

LXD is not...

LXDは完全仮想化を提供するものではありませんあくまでコンテナなので物理マシンと同等のパフォーマンスが出ます。

LXDはLXCを置き換えるプロジェクトではありませんLXDはLXCを補完するもので、LXDはコンテナを作成/管理するためにliblxcを使っています。

LXDはアプリケーションコンテナ管理ツールではありませんLXDはコンテナの中で動いているものには関知せず、システムコンテナ自体を管理します。

勘違いしないために、「LXDが何ではないのか」の正しい理解を

ちなみに、よくある質問:「コンテナは商用環境で使えるのか?」LXC自体は何年も前から商用サービスのワークロードを支えています。

…例えば

OpenStackはたくさんのサービスから成る“1 サービス : 1 ” 物理マシン にすると結構物理マシンが必要、かといって単純に集約してしまうと後でスケールアウトするときに大変

そこで、LXCを使って物理マシンの集約と柔軟性の両立

システムコンテナの応用例: Nova LXD

OpenStack Novaでシステムコンテナ

Nova LXD

github.com/lxc/nova-lxd

LXDのインストール

LXDのインストール方法## "lxd"パッケージのインストール## Ubuntu 15.10のクラウドイメージではデフォルトインストール済み$ sudo apt-get install lxd$ newgrp lxd

## イメージダウンロードサーバーを登録$ lxc remote add images images.linuxcontainers.org

## 最新のLXDを使いたい場合は## $ sudo apt-add-repository ppa:ubuntu-lxc/lxd-stable

Ubuntuの場合

LXDのデモ

はじめてのコンテナ## リモートイメージサーバーの情報$ lxc remote list

## 使用できるイメージの一覧$ lxc image list images: | less -S

## Ubuntu 14.04 LTS コンテナの起動$ lxc launch images:ubuntu/trusty/amd64 demo1

コンテナ情報## コンテナ一覧$ lxc list

## …デバッグを見てみると$ lxc list --debug$ jq .

## コンテナ情報$ lxc info demo1$ pgrep -af /sbin/init$ ps fax | less -S

$ lxc config show demo1

コンテナ内へ## コンテナでbashを起動$ lxc exec demo1 -- bash# exit

## コンテナ内でコマンドを実行$ lxc exec demo1 -- touch foo$ lxc exec demo1 -- ls -l

## ファイルのpush/pull$ lxc file push --mode=0600 /etc/hosts demo1/tmp/$ lxc exec demo1 -- ls -l /tmp

$ lxc file pull demo1/etc/hosts .

スナップショット## スナップショットの保存$ lxc snapshot demo1 good

## コンテナの破壊$ lxc exec demo1 -- rm -rf /usr

$ lxc exec demo1 -- ls /usr

## スナップショットから復元$ lxc restore demo1 good

$ lxc exec demo1 -- ls /usr

リソースの制限## CPU、メモリ情報の確認$ lxc exec demo1 -- grep -c processor /proc/cpuinfo$ lxc exec demo1 -- free -h

## CPU、メモリの制限を追加$ lxc config set demo1 limits.cpus 1$ lxc config set demo1 limits.memory 512M

$ lxc restart demo1

## 制限が反映されていることを確認$ lxc exec demo1 -- grep -c processor /proc/cpuinfo$ lxc exec demo1 -- free -h

あとはどんどん作るだけ## イメージにエイリアスを設定$ lxc image list

$ lxc image alias create ubuntu 76668f72d313

## 2コンテナ目以降を起動$ lxc launch ubuntu demo2

$ lxc launch ubuntu demo3

## コマンド一覧は$ lxc help

Ubuntu 16.04 LTSに向けて、LXDならびにNova LXDは進化し続けますひと口にコンテナと言っても、実はいろいろ。あなたの使い方にLXDは合いますか?

canonical.comubuntu.com

Questions?

canonical.com/careers