SlideShare uma empresa Scribd logo
1 de 22
iocage を使ってみよう
2018 年7月 26 日
(株)創夢 内藤 祐一郎
iocage とは
●
FreeBSD の上で jail を管理するためのツール
●
役割としては ezjail などと同じ
●
開発元は FreeNAS チーム
➔ FreeNAS に入っているものが ports に登録さ
れています
●
現在も github で開発中です
➔ BSDCan 2018 でも発表がありました
iocage を使うには
●
ZFS が必要です
– ZFS を前提にその機能をたくさん使っています
●
実装は Python3.6 のため
以下のパッケージをインストールします
– py36-iocage
●
インストールしたら次のコマンドで初期化します
– sudo iocage activate <pool 名 >
– ( 以後 iocage の実行には全て root 権限が必要です )
iocage のデータ領域
●
activate すると <pool 名 >/iocage というファイルシステムが作成されます
●
これは /iocage にマウントされます
●
この /iocage の中には以下のファイルシステムが作られます
1.download ( リリース毎のアーカイブ base.txz などを保存 )
2.images (import/export 用の zip ファイル )
3.jails ( 各 jail のルートファイルシステム )
4.log (iocage の動作ログ )
5.releases ( リリース毎のルートファイルシステム )
6.templates ( 各テンプレートのルートファイルシステム )
jail の作成
●
iocage create -n <jail 名 > -r < リリース名 >
– 例 : iocage create -n test10 -r 10.4-RELEASE
– < リリース名 > のアーカイブをダウンロードし、
展開した上で freebsd-update で最新のパッチを当て、
スナップショットを作成して、そのクローンから
<jail 名 > の jail を作成します
– 2回目以降はディスク内のデータが再利用されます
jail の作成(その2)
●
iocage create -n <jail 名 > -r < リリース名 > -c < 個数 >
– <jail 名 >_1 から <jail 名 >_< 個数 > までの jail を作成しま
す
– 例 : iocage create -n test -r 10.4-RELEASE -c 5
➔ test_1, test_2, test_3, test_4, test_5 が作成されます
●
iocage create -n <jail 名 > -t < テンプレート名 >
– テンプレート(後述)から jail を作成します
– -c も同様に使用できます
jail の一覧と削除
● iocage list
– 作成した jail を一覧表示します
●
iocage destroy <jail 名 > [-f]
– 作成した jail を削除します
– -f をつけると何も聞かれずに強制削除します
jail の起動・コマンド実行・終了
●
iocage start <jail 名 >
– jail を起動します
●
iocage console <jail 名 >
– jexec を実行します (root ユーザで /bin/sh が起動します )
●
iocage exec [-U <jail 内のユーザ名 >] <jail 名 > < コマンド >
– 指定したコマンドを [ 指定のユーザで ] 実行します
●
iocage stop <jail 名 >
– jail を終了します
jail の自動起動
●
iocage set boot=on <jail 名 >
– <jai 名 > のプロパティにブートするようマー
クします
● sysrc iocage_enable=YES
– rc スクリプトを有効にします
– 先ほどの boot プロパティが on の jail を rc スク
リプトが起動・終了します
– /etc/jail.conf は使用しません
ネットワーク
●
IPv4 アドレスの設定
– iocage set ip4=new <jail 名 >
– iocage set ip4_addr="em0|192.168.0.99/24" <jail 名 >
– iocage set defaultrouter=192.168.0.1 <jail 名 >
– iocage set allow_raw_sockets=1 <jail 名 >
➔ ping を使えるように
➔ IP アドレス、インタフェース名は適当に読み替
えてください
ネットワーク
●
IPv6 アドレスの設定
– iocage set ip6=new <jail 名 >
– iocage set ip6_addr="em0|2001:0:1:2::f0f0" <jail 名 >
– iocage set defaultrouter6="fe80::1%em0" <jail 名 >
➔ IP アドレス、インタフェース名は適当に読み替
えてください
ネットワーク
●
ホストの設定を引き継ぐ場合
– iocage set ip4=inherit <jail 名 >
– iocage set ip6=inherit <jail 名 >
ネットワーク
●
複数のインタフェースを使用する場合はカンマ区切りで複数記
述します
– 例 :”em0|192.168.0.99/24,em1|192.168.3.99/24”
●
vImage も利用可能ですが、
まだリリースされていないので割愛します
ディスクのマウント
●
jail 起動時にマウントするディスクを指定できます
●
iocage fstab <jail 名 > -a 
”/home/user_a /usr/home/user_a nullfs rw 0 0”
➔ホストの /home/user_a のディレクトリを jail 内の /usr/home/user_a に
マウントしてから起動します
➔ jail 側のプレフィックス (/iocage/jails/<jail 名 >/root) は不要です
➔エントリは iocage fstab <jail 名 > -l で表示されます
➔ iocage fstab <jail 名 > -r < 行番号 > でエントリを削除します
スナップショット
●
iocage snapshot <jail 名 > -n < スナップショット名 >
– 省略時のスナップショット名は YYYY-MM-
DD_hh:mm:ss
– 日時のタイムゾーンは UTC です
●
iocage snaplist <jail 名 > -l
– スナップショットの一覧表示(今はバグで -l が必
須)
●
iocage rollback <jail 名 > -n < スナップショット名 >
– 該当スナップショットにロールバック
●
iocage snapremove <jail 名 > -n < スナップショット名 >
– スナップショットの削除
クローン
●
iocage clone <jail 名 > -n < 新しい jail 名 >
– <jail 名 >@< 新しい jail 名 > でスナップショッ
トを作成し、 zfs clone します
– 今のところスナップショットからのクローン
はサポートされていません
テンプレート
●
iocage set template=yes <jail 名 >
– 既にある jail をテンプレートにします
– テンプレートは起動することができません
– iocage list にも表示されなくなります
– 一覧は iocage list -t と -t オプションを指定します
●
iocage set template=no <jail 名 >
– テンプレートから戻します
– 他 jail のテンプレートとして使われていても構いません
エクスポート
●
iocage export <jail 名 >
– iocage/images/<jail 名 >_YYYY-MM-DD.zip に書き
出します
– zip ファイルの中身は 設定の json ファイルと
zfs send したファイルシステムのイメージで
す
– sha256 のチェックサムを書いたファイルも作
成されます
インポート
●
iocage import <jail 名 >_YYYY-MM-DD
– iocage/images/<jail 名 >_YYYY-MM-DD.zip をインポートします
– 設定ファイルから jail 名を復元しインポートします
– ファイル名は iocage/jails の下のファイルシステム名に使われ
ます
– ファイル名を変えて import するとファイルシステム名が重
ならない限りインポートできますが、同じ jail 名のホストが
複数できるため管理が面倒です
アップデート・アップグレード
●
iocage update <jail 名 >
– freebsd-update を実行します
●
iocage upgrade <jail 名 > -r < リリース名 >
– freebsd-update upgrade を実行します
– -r 11.2-RELEASE などを指定します
小ネタ
●
作成した jail を SeverSpec でテストするには・・・
– spec ファイルに以下を記載します
➢ set :backend, :jexec
➢ set :jail_name, ioc-<jail 名 >
●
iocage で作成した jail の name は必ず ioc- が入るた
め、 ServerSpec 側には ioc- を付けた名前を指定します
●
その他は既存の spec ファイルがそのまま利用可能です
最後に
●
jail の作成に関する機能を一通り紹介ました
●
まだ紹介していない機能もありますので
man iocage などを参照してください
●
github にある README.mdも参考になります

Mais conteúdo relacionado

Mais procurados

レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!Hirotaka Sato
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStackAkira Yoshiyama
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るshimadah
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...ksk_ha
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向についてYasunori Goto
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)NTT DATA Technology & Innovation
 

Mais procurados (20)

レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較GPU Container as a Service を実現するための最新OSS徹底比較
GPU Container as a Service を実現するための最新OSS徹底比較
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作る
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
 

Semelhante a Iocage

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQLTeppei Inaba
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memoKiyotaka Oku
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたjiro4989
 
OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1Mibu Ryota
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージ「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージMasahito Zembutsu
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたdo_aki
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月VirtualTech Japan Inc.
 
#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfiler#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfilerYuji Kubota
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」 第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」 Kazuyuki Sato
 

Semelhante a Iocage (20)

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQL
 
Leiningen超速入門
Leiningen超速入門Leiningen超速入門
Leiningen超速入門
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
Openresty
OpenrestyOpenresty
Openresty
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
 
OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1OPNFV Handson Tokyo #1
OPNFV Handson Tokyo #1
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージ「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージ
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
 
Open VZ
Open VZOpen VZ
Open VZ
 
#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfiler#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfiler
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」 第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
第6回コンテナ型仮想化の情報交換@東京「今日から触れる Solaris Zones 入門」
 

Mais de Yuichiro Naito

Mais de Yuichiro Naito (20)

Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSDReporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
 
Bmd
BmdBmd
Bmd
 
WireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernelWireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernel
 
FreeBSD Capsicum
FreeBSD CapsicumFreeBSD Capsicum
FreeBSD Capsicum
 
Xrdp
XrdpXrdp
Xrdp
 
Bhyve debug-server
Bhyve debug-serverBhyve debug-server
Bhyve debug-server
 
Tramp mode
Tramp modeTramp mode
Tramp mode
 
HandBrake with QSV
HandBrake with QSVHandBrake with QSV
HandBrake with QSV
 
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESEFreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
 
Modern fonts
Modern fontsModern fonts
Modern fonts
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
Psql & proctitle
Psql & proctitlePsql & proctitle
Psql & proctitle
 
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
 
How to use PTI & IBRS patch
How to use PTI & IBRS patchHow to use PTI & IBRS patch
How to use PTI & IBRS patch
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
 
FreeBSD Ports Flavors
FreeBSD Ports Flavors FreeBSD Ports Flavors
FreeBSD Ports Flavors
 
Bsdtw repo
Bsdtw repoBsdtw repo
Bsdtw repo
 
How to use blacklistd
How to use blacklistdHow to use blacklistd
How to use blacklistd
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Ruby build
Ruby buildRuby build
Ruby build
 

Iocage

  • 1. iocage を使ってみよう 2018 年7月 26 日 (株)創夢 内藤 祐一郎
  • 2. iocage とは ● FreeBSD の上で jail を管理するためのツール ● 役割としては ezjail などと同じ ● 開発元は FreeNAS チーム ➔ FreeNAS に入っているものが ports に登録さ れています ● 現在も github で開発中です ➔ BSDCan 2018 でも発表がありました
  • 3. iocage を使うには ● ZFS が必要です – ZFS を前提にその機能をたくさん使っています ● 実装は Python3.6 のため 以下のパッケージをインストールします – py36-iocage ● インストールしたら次のコマンドで初期化します – sudo iocage activate <pool 名 > – ( 以後 iocage の実行には全て root 権限が必要です )
  • 4. iocage のデータ領域 ● activate すると <pool 名 >/iocage というファイルシステムが作成されます ● これは /iocage にマウントされます ● この /iocage の中には以下のファイルシステムが作られます 1.download ( リリース毎のアーカイブ base.txz などを保存 ) 2.images (import/export 用の zip ファイル ) 3.jails ( 各 jail のルートファイルシステム ) 4.log (iocage の動作ログ ) 5.releases ( リリース毎のルートファイルシステム ) 6.templates ( 各テンプレートのルートファイルシステム )
  • 5. jail の作成 ● iocage create -n <jail 名 > -r < リリース名 > – 例 : iocage create -n test10 -r 10.4-RELEASE – < リリース名 > のアーカイブをダウンロードし、 展開した上で freebsd-update で最新のパッチを当て、 スナップショットを作成して、そのクローンから <jail 名 > の jail を作成します – 2回目以降はディスク内のデータが再利用されます
  • 6. jail の作成(その2) ● iocage create -n <jail 名 > -r < リリース名 > -c < 個数 > – <jail 名 >_1 から <jail 名 >_< 個数 > までの jail を作成しま す – 例 : iocage create -n test -r 10.4-RELEASE -c 5 ➔ test_1, test_2, test_3, test_4, test_5 が作成されます ● iocage create -n <jail 名 > -t < テンプレート名 > – テンプレート(後述)から jail を作成します – -c も同様に使用できます
  • 7. jail の一覧と削除 ● iocage list – 作成した jail を一覧表示します ● iocage destroy <jail 名 > [-f] – 作成した jail を削除します – -f をつけると何も聞かれずに強制削除します
  • 8. jail の起動・コマンド実行・終了 ● iocage start <jail 名 > – jail を起動します ● iocage console <jail 名 > – jexec を実行します (root ユーザで /bin/sh が起動します ) ● iocage exec [-U <jail 内のユーザ名 >] <jail 名 > < コマンド > – 指定したコマンドを [ 指定のユーザで ] 実行します ● iocage stop <jail 名 > – jail を終了します
  • 9. jail の自動起動 ● iocage set boot=on <jail 名 > – <jai 名 > のプロパティにブートするようマー クします ● sysrc iocage_enable=YES – rc スクリプトを有効にします – 先ほどの boot プロパティが on の jail を rc スク リプトが起動・終了します – /etc/jail.conf は使用しません
  • 10. ネットワーク ● IPv4 アドレスの設定 – iocage set ip4=new <jail 名 > – iocage set ip4_addr="em0|192.168.0.99/24" <jail 名 > – iocage set defaultrouter=192.168.0.1 <jail 名 > – iocage set allow_raw_sockets=1 <jail 名 > ➔ ping を使えるように ➔ IP アドレス、インタフェース名は適当に読み替 えてください
  • 11. ネットワーク ● IPv6 アドレスの設定 – iocage set ip6=new <jail 名 > – iocage set ip6_addr="em0|2001:0:1:2::f0f0" <jail 名 > – iocage set defaultrouter6="fe80::1%em0" <jail 名 > ➔ IP アドレス、インタフェース名は適当に読み替 えてください
  • 12. ネットワーク ● ホストの設定を引き継ぐ場合 – iocage set ip4=inherit <jail 名 > – iocage set ip6=inherit <jail 名 >
  • 14. ディスクのマウント ● jail 起動時にマウントするディスクを指定できます ● iocage fstab <jail 名 > -a ”/home/user_a /usr/home/user_a nullfs rw 0 0” ➔ホストの /home/user_a のディレクトリを jail 内の /usr/home/user_a に マウントしてから起動します ➔ jail 側のプレフィックス (/iocage/jails/<jail 名 >/root) は不要です ➔エントリは iocage fstab <jail 名 > -l で表示されます ➔ iocage fstab <jail 名 > -r < 行番号 > でエントリを削除します
  • 15. スナップショット ● iocage snapshot <jail 名 > -n < スナップショット名 > – 省略時のスナップショット名は YYYY-MM- DD_hh:mm:ss – 日時のタイムゾーンは UTC です ● iocage snaplist <jail 名 > -l – スナップショットの一覧表示(今はバグで -l が必 須) ● iocage rollback <jail 名 > -n < スナップショット名 > – 該当スナップショットにロールバック ● iocage snapremove <jail 名 > -n < スナップショット名 > – スナップショットの削除
  • 16. クローン ● iocage clone <jail 名 > -n < 新しい jail 名 > – <jail 名 >@< 新しい jail 名 > でスナップショッ トを作成し、 zfs clone します – 今のところスナップショットからのクローン はサポートされていません
  • 17. テンプレート ● iocage set template=yes <jail 名 > – 既にある jail をテンプレートにします – テンプレートは起動することができません – iocage list にも表示されなくなります – 一覧は iocage list -t と -t オプションを指定します ● iocage set template=no <jail 名 > – テンプレートから戻します – 他 jail のテンプレートとして使われていても構いません
  • 18. エクスポート ● iocage export <jail 名 > – iocage/images/<jail 名 >_YYYY-MM-DD.zip に書き 出します – zip ファイルの中身は 設定の json ファイルと zfs send したファイルシステムのイメージで す – sha256 のチェックサムを書いたファイルも作 成されます
  • 19. インポート ● iocage import <jail 名 >_YYYY-MM-DD – iocage/images/<jail 名 >_YYYY-MM-DD.zip をインポートします – 設定ファイルから jail 名を復元しインポートします – ファイル名は iocage/jails の下のファイルシステム名に使われ ます – ファイル名を変えて import するとファイルシステム名が重 ならない限りインポートできますが、同じ jail 名のホストが 複数できるため管理が面倒です
  • 20. アップデート・アップグレード ● iocage update <jail 名 > – freebsd-update を実行します ● iocage upgrade <jail 名 > -r < リリース名 > – freebsd-update upgrade を実行します – -r 11.2-RELEASE などを指定します
  • 21. 小ネタ ● 作成した jail を SeverSpec でテストするには・・・ – spec ファイルに以下を記載します ➢ set :backend, :jexec ➢ set :jail_name, ioc-<jail 名 > ● iocage で作成した jail の name は必ず ioc- が入るた め、 ServerSpec 側には ioc- を付けた名前を指定します ● その他は既存の spec ファイルがそのまま利用可能です