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

【シェル芸】コマンド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
ご清聴、
ありがとうございました!
1 of 19

Recommended

QEMUでARM64bitベアメタルプログラミング by
QEMUでARM64bitベアメタルプログラミングQEMUでARM64bitベアメタルプログラミング
QEMUでARM64bitベアメタルプログラミングYuma Ohgami
3.8K views20 slides
フルスクラッチ自作OS(OS5)の紹介 by
フルスクラッチ自作OS(OS5)の紹介フルスクラッチ自作OS(OS5)の紹介
フルスクラッチ自作OS(OS5)の紹介Yuma Ohgami
1.1K views12 slides
【2000行弱!】x86用自作カーネルの紹介 by
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介Yuma Ohgami
8.2K views286 slides
ぱろっと、Padrinoやめるってよ by
ぱろっと、Padrinoやめるってよぱろっと、Padrinoやめるってよ
ぱろっと、Padrinoやめるってよparrotstudio
2K views30 slides
Ruby関西76 gr citrusの使い方#2 by
Ruby関西76 gr citrusの使い方#2Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2三七男 山本
798 views34 slides
俺とMacとアダルトビデオ[社外版] by
俺とMacとアダルトビデオ[社外版]俺とMacとアダルトビデオ[社外版]
俺とMacとアダルトビデオ[社外版]Mitsuki Ogasahara
2.5K views43 slides

More Related Content

What's hot

GR-CITRUSの紹介 by
GR-CITRUSの紹介GR-CITRUSの紹介
GR-CITRUSの紹介三七男 山本
1.2K views22 slides
my unite plugins by
my unite pluginsmy unite plugins
my unite pluginsbasyura
697 views52 slides
ルネサスナイト10発表資料 Rubyで作るラムネシュータ by
ルネサスナイト10発表資料 Rubyで作るラムネシュータルネサスナイト10発表資料 Rubyで作るラムネシュータ
ルネサスナイト10発表資料 Rubyで作るラムネシュータ三七男 山本
777 views20 slides
これから Raspberry Pi をいじる方向けの資料 20130616版 by
これから Raspberry Pi をいじる方向けの資料 20130616版これから Raspberry Pi をいじる方向けの資料 20130616版
これから Raspberry Pi をいじる方向けの資料 20130616版Michiya Tominaga
73.6K views49 slides
Raspberry pi on java 20130514 by
Raspberry pi on java 20130514Raspberry pi on java 20130514
Raspberry pi on java 20130514Masafumi Ohta
1.8K views26 slides
Rasberrypi 2013-08-17 by
Rasberrypi 2013-08-17Rasberrypi 2013-08-17
Rasberrypi 2013-08-17Hashimoto Hisashi
57 views15 slides

What's hot(19)

my unite plugins by basyura
my unite pluginsmy unite plugins
my unite plugins
basyura697 views
ルネサスナイト10発表資料 Rubyで作るラムネシュータ by 三七男 山本
ルネサスナイト10発表資料 Rubyで作るラムネシュータルネサスナイト10発表資料 Rubyで作るラムネシュータ
ルネサスナイト10発表資料 Rubyで作るラムネシュータ
三七男 山本777 views
これから Raspberry Pi をいじる方向けの資料 20130616版 by Michiya Tominaga
これから Raspberry Pi をいじる方向けの資料 20130616版これから Raspberry Pi をいじる方向けの資料 20130616版
これから Raspberry Pi をいじる方向けの資料 20130616版
Michiya Tominaga73.6K views
Raspberry pi on java 20130514 by Masafumi Ohta
Raspberry pi on java 20130514Raspberry pi on java 20130514
Raspberry pi on java 20130514
Masafumi Ohta1.8K views
ET2016 小さなRubyボード GR-CITRUSの紹介 by 三七男 山本
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本850 views
Kernel vm13lt by slankdev
Kernel vm13ltKernel vm13lt
Kernel vm13lt
slankdev638 views
RubyではじめるIoT(Wakayama.rb活動報告) by 三七男 山本
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
三七男 山本1.7K views
ロボットシステム学2015年第13回 by Ryuichi Ueda
ロボットシステム学2015年第13回ロボットシステム学2015年第13回
ロボットシステム学2015年第13回
Ryuichi Ueda3.5K views
これから Raspberry Pi をいじる方向けの資料 20130818版 by Michiya Tominaga
これから Raspberry Pi をいじる方向けの資料 20130818版これから Raspberry Pi をいじる方向けの資料 20130818版
これから Raspberry Pi をいじる方向けの資料 20130818版
Michiya Tominaga41.3K views
はてブ砲をくらったときのお話 by Tsukasa Oishi
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話
Tsukasa Oishi2.4K views
Web based 3D video streaming system “Depstreamer(仮)” by AmadeusSVX
Web based 3D video streaming system “Depstreamer(仮)”Web based 3D video streaming system “Depstreamer(仮)”
Web based 3D video streaming system “Depstreamer(仮)”
AmadeusSVX738 views
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring) by Hideki Aoshima
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
楽しく始めるRaspberry Pi、および最新動向(OSC 2014 Tokyo/Spring)
Hideki Aoshima8.3K views
Coffeescriptを初めて使う方へ by Koya Fukuda
Coffeescriptを初めて使う方へCoffeescriptを初めて使う方へ
Coffeescriptを初めて使う方へ
Koya Fukuda978 views
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)" by AmadeusSVX
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"
ウェブベース3D動画ライブストリーミングシステム”Depstreamer XR(仮)"
AmadeusSVX834 views

More from Yuma Ohgami

バイナリ生物学でデイジーワールド by
バイナリ生物学でデイジーワールドバイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールドYuma Ohgami
32 views24 slides
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか? by
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?Yuma Ohgami
21 views18 slides
60年代ゲームハードPDP-7のご紹介 by
60年代ゲームハードPDP-7のご紹介60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介Yuma Ohgami
72 views15 slides
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門 by
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門Yuma Ohgami
23 views20 slides
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介 by
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介Yuma Ohgami
25 views6 slides
セガサターンで動く自作シンセサイザーの紹介 by
セガサターンで動く自作シンセサイザーの紹介セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介Yuma Ohgami
265 views29 slides

More from Yuma Ohgami(20)

バイナリ生物学でデイジーワールド by Yuma Ohgami
バイナリ生物学でデイジーワールドバイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールド
Yuma Ohgami32 views
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか? by Yuma Ohgami
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
Yuma Ohgami21 views
60年代ゲームハードPDP-7のご紹介 by Yuma Ohgami
60年代ゲームハードPDP-7のご紹介60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介
Yuma Ohgami72 views
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門 by Yuma Ohgami
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
Yuma Ohgami23 views
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介 by Yuma Ohgami
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
Yuma Ohgami25 views
セガサターンで動く自作シンセサイザーの紹介 by Yuma Ohgami
セガサターンで動く自作シンセサイザーの紹介セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介
Yuma Ohgami265 views
セガサターンマシン語プログラミングの紹介 by Yuma Ohgami
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
Yuma Ohgami952 views
ハードの作りで振り返るセガサターン by Yuma Ohgami
ハードの作りで振り返るセガサターンハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
Yuma Ohgami589 views
エミュレータのコードを読んでわかるセガサターン by Yuma Ohgami
エミュレータのコードを読んでわかるセガサターンエミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
Yuma Ohgami440 views
エミュレータのコードを読んでわかる「セガサターン」 by Yuma Ohgami
エミュレータのコードを読んでわかる「セガサターン」エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
Yuma Ohgami158 views
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング by Yuma Ohgami
シェルスクリプトでセガサターンマシン語ベアメタルプログラミングシェルスクリプトでセガサターンマシン語ベアメタルプログラミング
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
Yuma Ohgami570 views
ゲームボーイ向けOSの作り方 by Yuma Ohgami
ゲームボーイ向けOSの作り方ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方
Yuma Ohgami679 views
メガドラ実機で自作のROMファイルを動かしてみた話 by Yuma Ohgami
メガドラ実機で自作のROMファイルを動かしてみた話メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
Yuma Ohgami726 views
/dev/kvmを直接叩いて自作VM by Yuma Ohgami
/dev/kvmを直接叩いて自作VM/dev/kvmを直接叩いて自作VM
/dev/kvmを直接叩いて自作VM
Yuma Ohgami1.1K views
x86_64向け自作OSの紹介 by Yuma Ohgami
x86_64向け自作OSの紹介x86_64向け自作OSの紹介
x86_64向け自作OSの紹介
Yuma Ohgami1.1K views
CybozuのOSS(WalB)へコミットしてみた/使ってみた by Yuma Ohgami
CybozuのOSS(WalB)へコミットしてみた/使ってみたCybozuのOSS(WalB)へコミットしてみた/使ってみた
CybozuのOSS(WalB)へコミットしてみた/使ってみた
Yuma Ohgami946 views
GPD WINでStretchを動かす by Yuma Ohgami
GPD WINでStretchを動かすGPD WINでStretchを動かす
GPD WINでStretchを動かす
Yuma Ohgami413 views
UEFIで始めるLinux From Scratch by Yuma Ohgami
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From Scratch
Yuma Ohgami1.3K views
UEFI向け自作OSの紹介 by Yuma Ohgami
UEFI向け自作OSの紹介UEFI向け自作OSの紹介
UEFI向け自作OSの紹介
Yuma Ohgami1.5K views
UEFIベアメタルプログラミング by Yuma Ohgami
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami1.5K views

【シェル芸】コマンド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 ご清聴、 ありがとうございました!