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