Solaris10 x86 6/06 にて、Solaris Container の作成をしてみました。
ファイルシステムは zfs を使ってみます。
まず zfs ファイルシステムのプールを作成します。
# zpool create -f zfspool c0d0s7
10GB 分切り出してみます。
# zfs create zfspool/zone1 # zfs set mountpoint=/export/zone1 zfspool/zone1 # zfs set quota=10G zfspool/zone1 # zfs list NAME USED AVAIL REFER MOUNTPOINT zfspool 156K 66.4G 24.5K /zfspool zfspool/home 35.5K 66.4G 35.5K /export/home zfspool/zone1 24.5K 10.0G 24.5K /export/zone1
/export/zone1 は chmod 700 しておきます。
# chmod 700 /export/zone1
zone1 という zone を作成してみます。 IPアドレスは 192.168.1.101 で、NIC は rtls0 を共有することにします。 ファイルシステムは上で切り出した /export/zone1 です。 自動起動も設定します。
# zonecfg -z zone1 zone1: そのような構成済みゾーンはありません 'create' を使用して、新しいゾーンの構成を開始してください。 zonecfg:zone1> create zonecfg:zone1> set zonepath=/export/zone1 zonecfg:zone1> set autoboot=true zonecfg:zone1> add net zonecfg:zone1:net> set address=192.168.1.101 zonecfg:zone1:net> set physical=rtls0 zonecfg:zone1:net> end zonecfg:zone1> verify zonecfg:zone1> commit zonecfg:zone1> exit
定義が作成されたことが確認できます。中身はまだありません。
# zoneadm list -vc ID NAME STATUS PATH 0 global running / - zone1 configured /export/zone1
global zone からパッケージをインストールしていきます。
# zoneadm -z zone1 install Preparing to install zone <zone1>. Creating list of files to copy from the global zone. Copying <2471> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1061> packages on the zone. Initializing package <290> of <1061>: percent complete: 27% ... Initialized <1061> packages on zone. Zone <zone1> is initialized. The file </export/zone1/root/var/sadm/system/logs/install_log> contains a log of the zone installation.
# zoneadm -z zone1 boot
OS としての初期設定を行うため、コンソール接続します。 言語やタイムゾーン、ホスト名などの設定をしていきます。
# zlogin -C zone1 [ゾーン 'zone1' コンソールに接続しました] ... Select a Language 0. English 1. Japanese Please make a choice (0 - 1), or press h or ? for help: ... (などなど)
全部設定が終われば、プロンプトが出てきます。 これで zone の作成は完了です。
SunOS Release 5.10 Version Generic_118855-15 32-bit Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Hostname: zone1 zone1 console login:
このコンソールは、~^D で抜けます。
running になっていることが確認できます。
# zoneadm list -vc ID NAME STATUS PATH 0 global running / 2 zone1 running /export/zone1
ifconfig で IP アドレスなどの確認をしてみました。 ユーザを作ればここで設定した 192.168.1.101 へ SSH 接続ができるので、 リモートから他の設定もできるようになります。
# hostname solaris10 # zonename global # ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 lo0:1: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 zone zone1 inet 127.0.0.1 netmask ff000000 rtls0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.1.2 netmask ffffff00 broadcast 192.168.1.255 ether 0:7:40:xx:xx:ca rtls0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 zone zone1 inet 192.168.1.101 netmask ffffff00 broadcast 192.168.1.255
# zonename zone1 # hostname zone1 # ifconfig -a lo0:1: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 rtls0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.1.101 netmask ffffff00 broadcast 192.168.1.255