SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
コンテナポータビリティの
振り返りとハマった事例紹介
(株)エーピーコミュニケーションズ 山岡 亮
自己紹介
• (株)エーピーコミュニケーションズ
• 先進サービス開発事業部
• 普段はGAE/GolangでWebアプリケーションの開発を担当
• たまにファイアーウォールいじったりすることも
• 最近は個人でDocker/Kubernetesをオモチャにしています
• SNS
• Twitter: https://twitter.com/mountainhill14
• Blog: https://dokupe.hatenablog.com/
コンテナのメリット
コンテナのメリット
• 軽量コンパクトで起動が早く、オーバーヘッドが少ない
コンテナのメリット
• 軽量コンパクトで起動が早く、オーバーヘッドが少ない
• コンテナごとに隔離された環境なので様々なワークロードを
混在させることができる
コンテナのメリット
• 軽量コンパクトで起動が早く、オーバーヘッドが少ない
• コンテナごとに隔離された環境なので様々なワークロードを
混在させることができる
• アプリケーションの動作環境を一式パックにできるので
ポータビリティが高い
コンテナのメリット
• 軽量コンパクトで起動が早く、オーバーヘッドが少ない
• コンテナごとに隔離された環境なので様々なワークロードを
混在させることができる
• アプリケーションの動作環境を一式パックにできるので
ポータビリティが高い
「ポータビリティ」 …… 一度動いたら別の環境でも動く
コンテナが隔離環境を作る仕組み
• ホストOSカーネルの機能を使って隔離環境を作る
• cgroups (Linux)
• CPU、メモリ等
• namespace (Linux)
• ネットワーク、マウント空間、その他
※Windowsでも同様の機能がありDockerも動くようです
https://www.publickey1.jp/blog/17/windows_serverlinuxwindows_server_2016.html
[参考]VMとの違い
• VMはソフトウェアで実装された仮想的な機械を作りOSが動く
• 1つのハードウェア上に様々なOSを混在させられる
• コンテナより強力な隔離環境だが、1VMにつき1つOSが起動するので
リソースのオーバーヘッドが大きい
[参考]VMとの違い
• VMはソフトウェアで実装された仮想的な機械を作りOSが動く
• 1つのハードウェア上に様々なOSを混在させられる
• コンテナより強力な隔離環境だが、1VMにつき1つOSが起動するので
リソースのオーバーヘッドが大きい
VMは各OSがハードウェアを共有する
コンテナは各アプリケーションがOSを共有する
Hardware
Hypervisor
VM VM
OS OS
MW/Lib MW/Lib
App App
OS
Container Runtime
Container
MW/Lib
App
Container
MW/Lib
App
VM Container
Hardware
Hypervisor
VM VM
OS OS
MW/Lib MW/Lib
App App
OS
Container Runtime
Container
MW/Lib
App
Container
MW/Lib
App
VM Container
VMとコンテナは直接比較するものではない
突然ですが質問です
一度どこかで動いたコンテナは
絶対に他の環境でも動くか?
答え: 否
絶対に動くとは限らない
• ホストOSのカーネルが変わると動かない可能性がある
• 実際どうなるかは中身のアプリケーション次第
OS
Container Runtime
Container
MW/Lib
App
Container
MW/Lib
App
共有部分
私が遭遇した事例
• Kubernetesをスクラッチで作りアプリをデプロイし遊んでいた
• Concourse CIというツールをデプロイしたところ動かない
• ついさっき手元のPCで動いていたのになぜ……?
環境差異
環境差異
• 動いた環境
• Ubuntu 18.04
• Amazon Linux 2
環境差異
• 動いた環境
• Ubuntu 18.04
• Amazon Linux 2
• 動かなかった環境
• CentOS 7.5
環境差異
• 動いた環境
• Ubuntu 18.04 ----- Linux Kernel 4.15
• Amazon Linux 2 -- Linux Kernel 4.14
• 動かなかった環境
• CentOS 7.5 ------- Linux Kernel 3.10
環境差異
• 動いた環境
• Ubuntu 18.04 ----- Linux Kernel 4.15
• Amazon Linux 2 -- Linux Kernel 4.14
• 動かなかった環境
• CentOS 7.5 ------- Linux Kernel 3.10
• Concourse CI公式ドキュメント
• allowing our binaries to work on just about any stack that's using a
recent enough Linux kernel (3.19+).
環境差異
• 動いた環境
• Ubuntu 18.04 ----- Linux Kernel 4.15
• Amazon Linux 2 -- Linux Kernel 4.14
• 動かなかった環境
• CentOS 7.5 ------- Linux Kernel 3.10
• Concourse CI公式ドキュメント
• allowing our binaries to work on just about any stack that's using a
recent enough Linux kernel (3.19+).
https://github.com/twitter/twemoji
確認してみた結果(CentOS)
確認してみた結果(Ubuntu)
まとめ
まとめ
• コンテナはポータビリティが高くとても便利
まとめ
• コンテナはポータビリティが高くとても便利
• 但しLinuxカーネルに関わるアプリは注意が必要
まとめ
• コンテナはポータビリティが高くとても便利
• 但しLinuxカーネルに関わるアプリは注意が必要
• とはいえ、大抵は問題無いので過度に恐れる必要は無い
まとめ
• コンテナはポータビリティが高くとても便利
• 但しLinuxカーネルに関わるアプリは注意が必要
• とはいえ、大抵は問題無いので過度に恐れる必要は無い
知っていれば困惑せずに済む
トラブった時に備えて是非頭の片隅に置いておきましょう

Contenu connexe

Tendances

ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
nagise
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
K Kinzal
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
Ryo Ito
 
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAIエンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
Yuki Okada
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 

Tendances (20)

Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知するPHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
 
究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 
カスタムコネクタ入門
カスタムコネクタ入門カスタムコネクタ入門
カスタムコネクタ入門
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAIエンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 

Similaire à コンテナポータビリティの振り返りとハマった事例紹介

HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
Monaca
 

Similaire à コンテナポータビリティの振り返りとハマった事例紹介 (20)

マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているかマルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
【Ltech#11】Kubernetesを利用した機械学習モデルの本番適用例
 
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
 
make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境
 
クラウド+コンテナで作る簡単Webアプリケーション
クラウド+コンテナで作る簡単Webアプリケーションクラウド+コンテナで作る簡単Webアプリケーション
クラウド+コンテナで作る簡単Webアプリケーション
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflow
 
【デブサミ福岡B4】MAGELLANの開発におけるDockerの使い方
【デブサミ福岡B4】MAGELLANの開発におけるDockerの使い方【デブサミ福岡B4】MAGELLANの開発におけるDockerの使い方
【デブサミ福岡B4】MAGELLANの開発におけるDockerの使い方
 
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
データが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit Vancouverデータが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit Vancouver
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第2回 JAWS−UG 神戸  開発運用の現場でのChef活用第2回 JAWS−UG 神戸  開発運用の現場でのChef活用
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
 
Dev opschef
Dev opschefDev opschef
Dev opschef
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
 
最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ
 
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
 

コンテナポータビリティの振り返りとハマった事例紹介