SlideShare a Scribd company logo
1 of 19
Download to read offline
【シェル芸】コマンド7つで簡易コンテナ
大神 祐真
yuma@ohgami.jp
2016/12/17
2016/12/17 大神 祐真 (yuma.ohgami.jp) 2
自己紹介
● 大神 祐真
– http://yuma.ohgami.jp
● 組み込み系のエンジニア
– Linux
– C言語、アセンブラ(ARM)
2016/12/17 大神 祐真 (yuma.ohgami.jp) 3
自己紹介
● 大神 祐真
– http://yuma.ohgami.jp
● 組み込み系のエンジニア
– Linux
– C言語、アセンブラ(ARM)
2016/12/17 大神 祐真 (yuma.ohgami.jp) 4
自己紹介
● 大神 祐真
– http://yuma.ohgami.jp
● 組み込み系のエンジニア
– Linux
– C言語、アセンブラ(ARM)
だったのですが
2016/12/17 大神 祐真 (yuma.ohgami.jp) 5
自己紹介
● 大神 祐真
– http://yuma.ohgami.jp
● 組み込み系のエンジニア
– Linux
– C言語、アセンブラ(ARM)
だったのですが
本社
営業所
12/1から
異動で
技術営業に
2016/12/17 大神 祐真 (yuma.ohgami.jp) 6
シェル芸で
コンテナをセットアップしてみる
発想
2016/12/17 大神 祐真 (yuma.ohgami.jp) 7
シェル芸で
コンテナをセットアップしてみる
● コンテナ型の仮想化で欠かせないのが
「名前空間の分離」
発想
2016/12/17 大神 祐真 (yuma.ohgami.jp) 8
シェル芸で
コンテナをセットアップしてみる
● コンテナ型の仮想化で欠かせないのが
「名前空間の分離」
● ”システムコールでは unshare”
発想
2016/12/17 大神 祐真 (yuma.ohgami.jp) 9
シェル芸で
コンテナをセットアップしてみる
● コンテナ型の仮想化で欠かせないのが
「名前空間の分離」
● ”システムコールでは unshare”
● unshareはコマンドもある
発想
2016/12/17 大神 祐真 (yuma.ohgami.jp) 10
シェル芸で
コンテナをセットアップしてみる
● コンテナ型の仮想化で欠かせないのが
「名前空間の分離」
● ”システムコールでは unshare”
● unshareはコマンドもある
● シェル芸できる!
発想
2016/12/17 大神 祐真 (yuma.ohgami.jp) 11
シェル芸で
コンテナをセットアップしてみる
目標
2016/12/17 大神 祐真 (yuma.ohgami.jp) 12
シェル芸で
コンテナをセットアップしてみる
● ルートディレクトリとPID名前空間の分離
目標
2016/12/17 大神 祐真 (yuma.ohgami.jp) 13
シェル芸で
コンテナをセットアップしてみる
● ルートディレクトリとPID名前空間の分離
目標
具体的には、
2016/12/17 大神 祐真 (yuma.ohgami.jp) 14
シェル芸で
コンテナをセットアップしてみる
● ルートディレクトリとPID名前空間の分離
● “ls /”で別のルートディレクトリが見える
目標
具体的には、
2016/12/17 大神 祐真 (yuma.ohgami.jp) 15
シェル芸で
コンテナをセットアップしてみる
● ルートディレクトリとPID名前空間の分離
● “ls /”で別のルートディレクトリが見える
● “ps”で新たにPID=1から割り振られている
目標
具体的には、
2016/12/17 大神 祐真 (yuma.ohgami.jp) 16
簡易コンテナをセットアップする
7つのコマンド
ホストマシン上
$ mkdir test_container
$ cd test_container
$ cp -r /bin /lib /lib64 .
$ sudo unshare -pf chroot . bash
簡易コンテナ上
# mkdir -p /proc /dev/pts
# mount -t proc proc /proc
# mount -t devpts devpts /dev/pts
2016/12/17 大神 祐真 (yuma.ohgami.jp) 17
結果
2016/12/17 大神 祐真 (yuma.ohgami.jp) 18
参考
●
もっと、しっかりと
シェルスクリプトで実現された方が居ます
MINCS
2016/12/17 大神 祐真 (yuma.ohgami.jp) 19
ご清聴、
ありがとうございました!

More Related Content

What's hot

my unite plugins
my unite pluginsmy unite plugins
my unite plugins
basyura
 
Raspberry pi on java 20130514
Raspberry pi on java 20130514Raspberry pi on java 20130514
Raspberry pi on java 20130514
Masafumi Ohta
 
はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話
Tsukasa Oishi
 
Coffeescriptを初めて使う方へ
Coffeescriptを初めて使う方へCoffeescriptを初めて使う方へ
Coffeescriptを初めて使う方へ
Koya Fukuda
 

What's hot (19)

GR-CITRUSの紹介
GR-CITRUSの紹介GR-CITRUSの紹介
GR-CITRUSの紹介
 
my unite plugins
my unite pluginsmy unite plugins
my unite plugins
 
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
ルネサスナイト10発表資料 Rubyで作るラムネシュータルネサスナイト10発表資料 Rubyで作るラムネシュータ
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
 
これから Raspberry Pi をいじる方向けの資料 20130616版
これから Raspberry Pi をいじる方向けの資料 20130616版これから Raspberry Pi をいじる方向けの資料 20130616版
これから Raspberry Pi をいじる方向けの資料 20130616版
 
Raspberry pi on java 20130514
Raspberry pi on java 20130514Raspberry pi on java 20130514
Raspberry pi on java 20130514
 
Rasberrypi 2013-08-17
Rasberrypi 2013-08-17Rasberrypi 2013-08-17
Rasberrypi 2013-08-17
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
Kernel vm13lt
Kernel vm13ltKernel vm13lt
Kernel vm13lt
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
ロボットシステム学2015年第13回
ロボットシステム学2015年第13回ロボットシステム学2015年第13回
ロボットシステム学2015年第13回
 
これから Raspberry Pi をいじる方向けの資料 20130818版
これから Raspberry Pi をいじる方向けの資料 20130818版これから Raspberry Pi をいじる方向けの資料 20130818版
これから Raspberry Pi をいじる方向けの資料 20130818版
 
Hacking Vox and Plagger
Hacking Vox and PlaggerHacking Vox and Plagger
Hacking Vox and Plagger
 
鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04
 
はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話
 
Web based 3D video streaming system “Depstreamer(仮)”
Web based 3D video streaming system “Depstreamer(仮)”Web based 3D video streaming system “Depstreamer(仮)”
Web based 3D video streaming system “Depstreamer(仮)”
 
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
 
Coffeescriptを初めて使う方へ
Coffeescriptを初めて使う方へCoffeescriptを初めて使う方へ
Coffeescriptを初めて使う方へ
 
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"
 
NFC
NFCNFC
NFC
 

More from Yuma Ohgami

More from Yuma Ohgami (20)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!
 
バイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールドバイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールド
 
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
 
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
 
60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介
 
来週の展示内容紹介
来週の展示内容紹介来週の展示内容紹介
来週の展示内容紹介
 
DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介
 
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
 
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
 
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
 
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
 
バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介
 
セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
 
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターンハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
 
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターンエミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
 
エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
 
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
シェルスクリプトでセガサターンマシン語ベアメタルプログラミングシェルスクリプトでセガサターンマシン語ベアメタルプログラミング
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
 
ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方
 

【シェル芸】コマンド7つで簡易コンテナ

  • 2. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 2 自己紹介 ● 大神 祐真 – http://yuma.ohgami.jp ● 組み込み系のエンジニア – Linux – C言語、アセンブラ(ARM)
  • 3. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 3 自己紹介 ● 大神 祐真 – http://yuma.ohgami.jp ● 組み込み系のエンジニア – Linux – C言語、アセンブラ(ARM)
  • 4. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 4 自己紹介 ● 大神 祐真 – http://yuma.ohgami.jp ● 組み込み系のエンジニア – Linux – C言語、アセンブラ(ARM) だったのですが
  • 5. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 5 自己紹介 ● 大神 祐真 – http://yuma.ohgami.jp ● 組み込み系のエンジニア – Linux – C言語、アセンブラ(ARM) だったのですが 本社 営業所 12/1から 異動で 技術営業に
  • 6. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 6 シェル芸で コンテナをセットアップしてみる 発想
  • 7. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 7 シェル芸で コンテナをセットアップしてみる ● コンテナ型の仮想化で欠かせないのが 「名前空間の分離」 発想
  • 8. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 8 シェル芸で コンテナをセットアップしてみる ● コンテナ型の仮想化で欠かせないのが 「名前空間の分離」 ● ”システムコールでは unshare” 発想
  • 9. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 9 シェル芸で コンテナをセットアップしてみる ● コンテナ型の仮想化で欠かせないのが 「名前空間の分離」 ● ”システムコールでは unshare” ● unshareはコマンドもある 発想
  • 10. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 10 シェル芸で コンテナをセットアップしてみる ● コンテナ型の仮想化で欠かせないのが 「名前空間の分離」 ● ”システムコールでは unshare” ● unshareはコマンドもある ● シェル芸できる! 発想
  • 11. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 11 シェル芸で コンテナをセットアップしてみる 目標
  • 12. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 12 シェル芸で コンテナをセットアップしてみる ● ルートディレクトリとPID名前空間の分離 目標
  • 13. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 13 シェル芸で コンテナをセットアップしてみる ● ルートディレクトリとPID名前空間の分離 目標 具体的には、
  • 14. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 14 シェル芸で コンテナをセットアップしてみる ● ルートディレクトリとPID名前空間の分離 ● “ls /”で別のルートディレクトリが見える 目標 具体的には、
  • 15. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 15 シェル芸で コンテナをセットアップしてみる ● ルートディレクトリとPID名前空間の分離 ● “ls /”で別のルートディレクトリが見える ● “ps”で新たにPID=1から割り振られている 目標 具体的には、
  • 16. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 16 簡易コンテナをセットアップする 7つのコマンド ホストマシン上 $ mkdir test_container $ cd test_container $ cp -r /bin /lib /lib64 . $ sudo unshare -pf chroot . bash 簡易コンテナ上 # mkdir -p /proc /dev/pts # mount -t proc proc /proc # mount -t devpts devpts /dev/pts
  • 17. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 17 結果
  • 18. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 18 参考 ● もっと、しっかりと シェルスクリプトで実現された方が居ます MINCS
  • 19. 2016/12/17 大神 祐真 (yuma.ohgami.jp) 19 ご清聴、 ありがとうございました!