Ubuntu で lxc のインストールとテスト実行

lxc コンテナでは,プロセス,ファイルシステム,IPC,ネットワークが仮想化され,ホストや他のコンテナと完全に分離された実行環境を提供します.

参考Webページ

https://help.ubuntu.com/12.04/serverguide/lxc.html

http://www.stgraber.org/2012/05/04/lxc-in-ubuntu-12-04-lts/

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を実施するには, 次のコマンドを実行します.

Ubuntu のインストールは別ページ »で説明

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

* lxc をパッケージを用いてインストール

Ubuntu でパッケージを用いてインストールする場合の手順

次のコマンドを実行します.

sudo apt -y update
sudo apt -y install debootstrap 
sudo apt -y install lxc 
sudo apt -y install lxctl 

使ってみる

コンテナの生成,複製,破棄,および生成済コンテナの一覧表示

コンテナの起動,終了,および状態表示

コンソール接続

起動中のコンテナへのコンソール接続

sudo lxc-console -n hoge

コンテナ側に接続された端末での操作

既定(デフォルト)の設定の確認

以上の実行結果から,次の設定値が確認できます.

コンテナの仮想NIC (veth) 名 (コンテナ内部から識別される名前) eth0
コンテナで利用可能な CPU コア数 (cpuset.cpus) 0-8
コンテナで利用可能な メモリ使用量の上限 (memory.limit_in_bytes) 0-8

ブリッジ接続

  • ホストで 「ifconfig -a」を実行し,inet アドレス(IP アドレス), ブロードキャスト・アドレス,ネット・マスクを確認します.
    ifconfig -a 
    
  • デフォルト・ルータの IP アドレス,DNS サーバの IP アドレスを確認します.

    これらは,インターネットプロバイダから指定されたアドレスであったり, ブロードバンドルータの設定値であったりします.

  • ホストで bridge-utils をインストール

    ホストで「sudo apt -y install bridge-utils」を実行します.

    sudo apt -y update
    sudo apt -y install bridge-utils
    
  • bridge-utils のインストールとブリッジ接続の設定
    1. /etc/network/interfaces に「br0」の設定を追記

      現在ホストが使用している inet アドレス(IP アドレス), ネットワーク・アドレス, ネット・マスク, ブロードキャスト・アドレス, ゲートウエイの IP アドレス (デフォルト・ルータの IP アドレス), DNS サーバの IP アドレスを そのまま記述します.

      ◆ 設定例

      inet アドレス(IP アドレス) 192.168.111.21
      ネットワーク・アドレス 192.168.111.0
      ネット・マスク 255.255.255.0
      ブロードキャスト・アドレス 192.168.111.255
      ゲートウエイの IP アドレス (デフォルト・ルータの IP アドレス) 192.168.111.1
      DNS サーバの IP アドレス 192.168.111.1

      ◆ 追記の例

      auto br0
      iface br0 inet static
      address 192.168.111.21
      network 192.168.111.0
      netmask 255.255.255.0
      broadcast 192.168.111.255
      gateway 192.168.111.1
      dns-nameservers 192.168.111.1
      bridge_ports eth0
      bridge_stp off
      bridge_maxwait 1
      
      auto eth0
      iface eth0 inet static
        address 0.0.0.0
      
    2. 再起動
      sudo /etc/init.d/networking restart
      
    3. 「ifconfig -a」で設定を確認

      br0 が追加されていることを確認します.

    4. ufw の設定

      設定ファイル /etc/default/ufw の DEFAULT_FORWARD_POLICY の行を,

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      のように書き換え,「sudo service ufw restart」を実行します.

    5. (オプション)ホストで「sudo apt -y install dnsmas」を実行
    6. lxc 設定ファイルの作成

      ◆ lxc 設定ファイルの例

      lxc.utsname = hoge2
      lxc.network.type=veth
      lxc.network.link=br0
      lxc.network.flags=up
      lxc.network.name=eth0
      lxc.network.ipv4=192.168.111.22/24
      
    7. lxc 設定ファイルを用いたコンテナの作成

      ◆ コマンドの例

      -t オプションでテンプレート名を,-n オプションでコンテナ名を,-f オプションで lxc 設定ファイルのファイル名を指定します.

      sudo lxc-create -t ubuntu -n hoge2 -f lxc-veth.conf
      
    8. 使ってみる

      ホストで次のように操作します.

      sudo lxc-start -n hoge2
      

      数十秒待つとコンソールが開きます.外部に ssh のポート(番号22番)が開放されているため,セキュリティ対策としてパスワードを変更しておきます.

      その後,ホストから次のコマンドを実行して,lxc コンテナ上の ssh サーバへの接続をテストします.

      ssh ubuntu@<設定したIPアドレス>
      

      ログインが確認できたら,セキュリティ対策として lxc-shutdown で速やかにコンテナを停止し,lxc-destroy で削除するか,適切なセキュリティ設定を実施します.