SlideShare une entreprise Scribd logo
1  sur  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も参考になります

Contenu connexe

Tendances

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Takashi Takizawa
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介Tetsutaro Watanabe
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User NamespacesAkihiro Suda
 
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlinWriting Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin賢太郎 前多
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しようUnityTechnologiesJapan002
 
JPAのキャッシュを使ったアプリケーション高速化手法
JPAのキャッシュを使ったアプリケーション高速化手法JPAのキャッシュを使ったアプリケーション高速化手法
JPAのキャッシュを使ったアプリケーション高速化手法Chihiro Ito
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)Yoshiro Tokumasu
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 

Tendances (20)

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlinWriting Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
競プロでGo!
競プロでGo!競プロでGo!
競プロでGo!
 
OpenvswitchでVPS
OpenvswitchでVPSOpenvswitchでVPS
OpenvswitchでVPS
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
 
JPAのキャッシュを使ったアプリケーション高速化手法
JPAのキャッシュを使ったアプリケーション高速化手法JPAのキャッシュを使ったアプリケーション高速化手法
JPAのキャッシュを使ったアプリケーション高速化手法
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 

Similaire à 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 入門」SolarisJP
 

Similaire à 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 入門」
 

Plus de Yuichiro Naito

Plus 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 ファイルがそのまま利用可能です