Solaris10コンテナを作ってみた。

参考元
http://www.02.246.ne.jp/~torutk/solaris/solaris10_x86.html#SEC51

bash-3.00# zonecfg -z tezuka
tezuka: そのような構成済みゾーンはありません
'create' を使用して、新しいゾーンの構成を開始してください。<無視
zonecfg:tezuka> create
zonecfg:tezuka> set zonepath=/export2
zonecfg:tezuka>
zonecfg:tezuka> add net
zonecfg:tezuka:net> set address=10.10.20.10
zonecfg:tezuka:net> set physical=eri0
zonecfg:tezuka:net> end

exportコマンドで定義をみれるけどどうでもいい。
保存して終了

zonecfg:tezuka> verify
zonecfg:tezuka> commit
zonecfg:tezuka> exit

定義ファイルがつくられる模様。
bash-3.00# cat /etc/zones/tezuka.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE zone PUBLIC "-//Sun Microsystems
Inc//DTD Zones//EN" "file:///usr/share/lib/xml/dtd/zonecfg.dtd.1">
<!--
DO NOT EDIT THIS FILE. Use zonecfg(1M) instead.
-->
<zone name="tezuka" zonepath="/export2" autoboot="false">
<inherited-pkg-dir directory="/lib"/>
<inherited-pkg-dir directory="/platform"/>
<inherited-pkg-dir directory="/sbin"/>
<inherited-pkg-dir directory="/usr"/>
<network address="10.10.20.10" physical="eri0"/>
</zone>

構成ができたら確認
bash-3.00# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- tezuka configured /export2

インストールする。
bash-3.00# zoneadm -z tezuka install
/export2 は "グループ読み取り可能" であってはいけません。
/export2 は "グループ実行可能" であってはいけません。
/export2 は "その他のユーザ読み取り可能" であってはいけません。
/export2 は "その他のユーザ実行可能" であってはいけません。
上記のエラーのため、ゾーンパス /export2 を検証できませんでした。
zoneadm: ゾーン tezuka の検証に失敗しました

ほう。じゃ700に

bash-3.00# chmod 700 /export2
bash-3.00# zoneadm -z tezuka install
Preparing to install zone <tezuka>.
Creating list of files to copy from the global zone.
Copying <1630> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <807> packages on the zone.
Initialized <807> packages on zone.
Zone <tezuka> is initialized.
The file </export2/root/var/sadm/system/logs/install_log>
contains a log of the zone installation.

ゾーンが作られたことを確認
bash-3.00# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- tezuka installed /export2

手塚ゾーン!




非グローバルゾーンのコンソールに接続して
zlogin -C tezuka
別のターミナルから zoneadm -C tezuka boot
するとzloginのターミナルはインストール時のプロンプトに
なって4,5個の質問を聞かされる。DNSとかゲートウェイとか。

仮想OSはpasswdとかhostsとか継承されないので一般ユーザとかつくる。





【まとめ】
ログインしてしまえばいつものSolaris(globalゾーン)と扱いは同じ。
リモートからもユーザとか設定すれば入れる。
親(globalゾーン)をあまり意識しない。
ホスト名はゾーン名と一緒らしい。
ただし、
inherited-pkg-dirで指定されたディレクトリは
グローバルのものと同じ実体(ハードリンクっぽいinode番号同じだった)
かつ 読み込み専用なので注意
非グローバルゾーンのパーティションサイズ
インストールしたパス(今回の場合/export2)のあるFSのサイズ。
大きくしたければ、グローバルゾーンのFSを大きくしる(ZFSだと楽なのだろう)
ディスクは無いものと見なされる?
# format
Searching for disks...done
No disks found!
グローバルゾーンのpasswdとかhostsは全く継承されない。
初回ログイン時セットアップがはしることからもわかる。
最初にrootで入って設定する。
NICは物理NICにもう一つIP振ったような状態
eri0:1 みたいに追加され、ifconfig -aでも事実そう映る。
グローバルゾーンからみたとき
eri0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
zone tezuka
inet 10.10.20.10 netmask ff000000 broadcast 10.255.255.255
zone tezukaに注目
非グローバルゾーンからみたとき
eri0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.10.20.10 netmask ff000000 broadcast 10.255.255.255
プロセス空間もglobal zoneと共有される
[2/16訂正]
global zoneからみると
# ps -ef | grep 4007
root 4018 4007 0 2月 16 ? 0:02 /sbin/init
root 4007 1 0 2月 16 ? 0:00 zsched
非グローバルzoneからみると
root 4018 4007 0 Feb 16 ? 0:02 /sbin/init
root 4007 4007 0 Feb 16 ? 0:00 zsched
グローバルも非グローバルもzschedというのが親に成っている
のだけど、グローバルでPPIDが1のプロセスのうちいくつかは、非グローバルではPPIDがzschedのPIDになるみたいな?
この見える見えないのルールがよくわからない。

コメント

このブログの人気の投稿

4.3.0 Temporary Lookup Failureでドツボってた話

tomcat起動時の環境変数でJRE_HOMEを指定するときに

何が得られて何処へ向かうかだけを問うべき