Solarisコンテナ設定

Solaris10コンテナ(ゾーン)構築手順


概要

コンテナとは、OS内に仮想OSを構築する技術です。(仮想Solaris環境は完全に独立して稼働する仕組みであり、「jail」と同等といえる。)

Solarisコンテナは、「Solaris ゾーン」と「Solarisリソースマネージャ」の2つの機能から構成される。


「Solaris ゾーン」は、1つのOS空間を仮想的に分割して複数のOSが動作しているようにみせるソフトウェアパーティショニング機能です。Solaris 環境を独立した複数のパーティション(論理空間)に分割して、1台の筐体内に約8000個の仮想Solaris環境を構築することができます。


「Solarisリソースマネージャ」は、仮想Solaris環境においてCPUやメモリなどのハードウェアリソースを柔軟に配分するリソース管理機能です。優先度の高い業務に優先的にリソースを配分するなど、リソースの有効活用が可能です。1CPUしか搭載していないサーバでも複数の仮想Solaris環境を構築することができ、ハードウェアリソースの使用率向上を実現します


仮想Solaris環境同士は完全に隔離されており、ある仮想Solaris環境で動作しているプロセスを、他の仮想Solaris環境から見たり、アクセスしたりすることはできません。


各zoneは仮想ネットワークインタフェースを持ち、LANに接続されている他のサーバと通信を行います。zone同士の通信もネットワークを通じて行います。ホスト名やIPアドレスなどの設定はzone毎に行います。


global zoneおよび各zoneは、それぞれ固有のホスト名とIPアドレスを持っています。ネットワーク通信で使用するport番号もglobal zone, zoneがそれぞれ独立して管理します。

root権限もzoneごとに設定でき、それぞれ独立したシステムとして管理できます。

Timezoneはglobal zoneの設定を引き継ぎます。


構築手順

仮想環境用ディレクトリを作成(コンテナのルートディレクトリ)


mkdir /export/home/zones/container01
chmod 700 /export//home/zones/container01

コンテナ作成


# zonecfg -z container01
container01: そのような構成済みゾーンはありません
'create' を使用して、新しいゾーンの構成を開始してください。
zonecfg:container01> create

コンテナ環境を編集

仮想環境用ディレクトリ(コンテナのルートディレクトリ)を指定する。


set zonepath=/export/home/zones/container01

ホストOS起動時に自動的に仮想環境を立ち上げる


set autoboot=true

ファイルシステムを設定する。(必要な場合のみ実施してください)


add fs
set dir=/usr/local
set special=/opt/zone
set type=lofs
end
add fs
set dir=/usr/lib
set special=/opt/zone
set type=lofs
end
add fs
set dir=/usr/bin
set special=/opt/zone
set type=lofs
end

疎ルートゾーン設定

「/usr」を疎ルートゾーンから外す。

アプリケーションで/usr/libや/usr/binにシンボリックリンクを作成するような場合、/usrへ書き込みできるようにしなければインストールができない状態になってしまう。


remove inherit-pkg-dir dir=/usr

ネットワーク設定を行う

コンテナは実NIC「bge0」に対して仮想NIC「bge0:1」を設定する


add net
set address=10.18.156.95
set physical=bge0
end

コンテナ設定情報を表示する


info
verify

コミットする。


commit
exit

コンテナのインストール

仮想環境構築はかなり時間がかかります。


# zoneadm list -vc
 ID NAME             STATUS         PATH
  0 global           running        /
  - container01      configured     /export/zones/container01
# zoneadm -z container01 install

コンテナを起動する


# zoneadm list -vc
 ID NAME             STATUS         PATH
  0 global           running        /
  - container01      installed      /export/zones/container01
# zoneadm -z container01 boot

コンテナへログインする

初回ログイン時には、OSインストール時のような設定へ進みます


# zoneadm list -vc
 ID NAME             STATUS         PATH
  0 global           running        /
  1 container01      running        /export/zones/container01
# zlogin -C container02

注意点

デフォルトでは、/lib, /platform, /sbin, /usrが疎ルートゾーンとして構成されます。inherit-pkg-dirで共有されている状態ではコンテナ側は読み込み権限のみ付加されるため、アプリケーションのインストールができない。

完全ルートゾーンとして構成するにはremoveコマンドでこれらの設定を削除する必要があります

export配下にhomeは存在しないため、作成する必要がある。


zoneコマンド操作

logout

チルダを押してからドットを入力


コンテナ停止


# zoneadm -z container02 halt

アンインストール


# zoneadm -z container02 uninstall

消去


# zonecfg -z container02 delete

強制削除


# zonecfg -z container02 delete -F