金子邦彦研究室インストールchroot,lxc コンテナ,QEMU エミュレータUbuntu で lxc のインストールとテスト実行

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

lxc コンテナでは、プロセス、ファイルシステム、IPC、ネットワークアドレスが仮想化され、他の lxc コンテナやホストと隔離される.

参考Webページ

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

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

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 次のコマンドを実行.

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

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

[image]

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

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

以上の実行結果からは、次のことが読み取れる。

コンテナの仮想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 アドレス)、 ゲートウエイの 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
      

      [image]
    3. 「ifconfig -a」 で設定の確認

      br0 が追加されたことを確認する

    4. ufw の設定

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

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      のように書き換えて、「sudo service ufw restart」を実行

      [image]
    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
      

      [image]
    8. 使ってみる

      ホストで次のように操作

      sudo lxc-start -n hoge2
      

      [image]

      数十秒待つとコンソールが開く. 外部に ssh のポート(番号22番)が開いているので、次のように操作して、パスワードを変更しておく

      [image]

      その後、 試しに、ホストで、次のように操作. これは、lxc コンテナ上の ssh サーバにログインする操作

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

      [image]

      ログインできる。セキュリティ上、危ないので、 以上のような動作確認ができたら lxc-shutdown ですぐに停止し、lxc-destroy で消去してしまうか、セキュリティ設定をしっかりと行う。


    コンテナ名 コンテナの仮想NIC (veth) 名 eth0 (コンテナ内部から識別される名前) ホストの仮想ブリッジ名 br0 コンテナで利用できる CPU コア数 (cpuset.cpus) コンテナで利用できる メモリ使用量の上限 (memory.limit_in_bytes) Control Group (cgroups)