Slide 1

Slide 1 text

コンテナ技術入門 コンテナ技術特集(フィンテックエンジニア養成勉強会#16)

Slide 2

Slide 2 text

プロフィール 土居 幸平(Doi Kohei) Twitter:@pyorne 2012~2020年 大手SIer、中小SIerにてインフラエンジニア(サーバ/ネットワーク)として従事 文教、メディア系を中心にシステム構築に携わる 2021年~ クラウドネイティブな世界へ飛び込むべくエーピーコミュニケーションズへJoin Azureのコンテナサービスを利用したシステム構築のコンサル/企業向けトレーニングなどを担当 会社名:エーピーコミュニケーションズ ①DevOps支援~受託開発、上流~下流工程、オンプレ、IaaS、PaaS、コンテナまで幅広い技術経験 ②Docker Enterprise事業を買収したMirantisと戦略提携を結んだ技術基盤力 ③日本マイクロソフトが提供する「Cloud Native Dojo」の提携パートナー ④書籍・執筆活動や技術コミュニティへの参加、登壇などエンジニアドリブンな活動 2

Slide 3

Slide 3 text

今日お話すること ・コンテナ、Dockerて何? ・Dockerの基本(Build、Ship、Run) ・コンテナのオーケストレーションの概要 ・コンテナを取り巻く時代背景 3

Slide 4

Slide 4 text

コンテナ、Dockerって何? コンテナ技術入門

Slide 5

Slide 5 text

コンテナとは 貨物輸送コンテナをイメージするとわかりやすい 貨物輸送コンテナの特徴 ・船上の限られた空間に効率良く配置できる ・持ち運びやすい ・中身が他のコンテナと混ざらない コンテナ容器1つ1つがアプリケーション 船がホストOS 5

Slide 6

Slide 6 text

Linuxコンテナとは Linux® コンテナとは、システムの他の部分とは分離された一連のプロセスで す。これらのプロセスを実行するために必要なファイルはすべて個別のイメー ジから提供されます。つまり、Linux コンテナは、開発からテスト、最終的に は本番環境へ移行するまで可搬性と一貫性を維持します。1 1 Linux コンテナとは何か - コンテナ技術の仕組みと歴史| Red Hat 6

Slide 7

Slide 7 text

ハイパーバイザー 仮想マシンとの比較 ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ (プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) よく似た概念に従来の仮想マシンがある コンテナの実態は、プロセスである 仮想マシンのアプリケーション ⇒ ゲストOS上のカーネルで実行 1 コンテナのアプリケーション ⇒ ホストOS上のカーネルで実行 7 1 https://ascii.jp/elem/000/000/415/415665/ 正確には少し異なりますが、ここでは比較のためあえてこういう表現 にしております

Slide 8

Slide 8 text

仮想マシンとの比較 貨物輸送で使われるコンテナをイメージするとわかりやすい コンテナの特徴 ・効率良く配置(ハードウェアリソースを有効活用)できる ・持ち運びやすい(軽量、異種環境でも動作可能) ・中身が他のコンテナと混ざらない 8 従来の仮想マシンイメージ コンテナのイメージ図 コンテナをアプリケーション 船がホストOS(カーネル)

Slide 9

Slide 9 text

ハイパーバイザー 仮想マシンとの比較(隔離性) ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ (プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) プロセス同士の干渉や影響が懸念 9 仮想マシン単位で分離されている

Slide 10

Slide 10 text

コンテナを構成する技術要素とは Linuxカーネル技術である以下2つの要素で主に実現 ・namespace(名前空間) ユーザープロセスのグループ化、ファイルシステム、ネットワーク設定の分離 ・cgroups(コントロールグループ) グループ(コンテナ)に対しCPU、メモリ等ハードウェアリソースの割当 10

Slide 11

Slide 11 text

Dockerとは コンテナの作成と使用を可能にするオープンソース・ソフトウェア1 (事実上のデファクトスタンダード) namespaceやcgroupなどの複雑なコンテナ作成作業をCLIで簡単に実行できる 1.Docker とは - 解説、メリット、できること | Red Hat 11

Slide 12

Slide 12 text

Dockerの基本 Build、Ship、Run コンテナ技術入門

Slide 13

Slide 13 text

ここからのお話 Dockerにより、ホスト上で動くアプリケーション(Dockerイメージ)を開発・移 動・実行していく流れを見ていきます。 13

Slide 14

Slide 14 text

Build、Ship、Run Build(構築)、Ship(共有)、Run(実行)はDockerが掲げるスローガンであり Dockerが提供する基本機能 14 コンテナエンジン(dockerd) ハードウェア pull コンテナー コンテナレジストリ (Docker Hub) CentOS リポジトリ Ubuntu リポジトリ Container Image push Nginx リポジトリ カーネル Run Build Container Image Container Image docker image pull docker image push Dockerfile tag:latest tag:6.7 ・ ・ tag:latest tag:14.04 ・ ・ tag:latest tag:19.1 ・ ・ Ship

Slide 15

Slide 15 text

Build、Ship、Run Build(構築)、Ship(共有)、Run(実行)はDockerが掲げるスローガンであり Dockerが提供する基本機能 15 コンテナエンジン(dockerd) ハードウェア カーネル Build Container Image Dockerfile

Slide 16

Slide 16 text

Build(構築) Dockerコンテナイメージを作成する 作成は主にDocerfile(イメージの構成内容をまとめて記述するテキスト形式のフ ァイル)を用いてコンテナイメージへの複数作業を一括で行う docker image buildコマンドで、Dockerfileの上から 順番に実行 同じコンテナイメージがBuildされる 16 アプリケーション ライブラリ コンテナ (プロセス) Dockerコンテナイメージ

Slide 17

Slide 17 text

Build、Ship、Run Build(構築)、Ship(共有)、Run(実行)はDockerが掲げるスローガンであり Dockerが提供する基本機能 17 コンテナエンジン(dockerd) ハードウェア pull コンテナレジストリ (Docker Hub) CentOS リポジトリ Ubuntu リポジトリ push Nginx リポジトリ カーネル Build Container Image Container Image docker image pull docker image push Dockerfile tag:latest tag:6.7 ・ ・ tag:latest tag:14.04 ・ ・ tag:latest tag:19.1 ・ ・ Ship

Slide 18

Slide 18 text

Dockerコンテナはコンテナレジストリでイメージを共有することでチーム開発を高速に 加速化できる 作成したイメージは軽量でパッケージング化されており、異種OSでも動作するため、ロ ーカル、仮想、クラウド環境など場所を問わず移植性が高い ベースイメージ (必要最小限) Ship(共有) アプリケーション コンテナ (プロセス) ベースイメージ (必要最小限) イメージレジストリ (Docker Hubなど) 開発イメージ チーム内の開発者 開発ベンダー 本番イメージ 本番環境 (ローカル、クラウド場所問わず) 18 FROM: Docker image push Docker image pull

Slide 19

Slide 19 text

Build、Ship、Run Build(構築)、Ship(共有)、Run(実行)はDockerが掲げるスローガンであり Dockerが提供する基本機能 19 コンテナエンジン(dockerd) ハードウェア pull コンテナー コンテナレジストリ (Docker Hub) CentOS リポジトリ Ubuntu リポジトリ Container Image push Nginx リポジトリ カーネル Run Build Container Image Container Image docker image pull docker image push Dockerfile tag:latest tag:6.7 ・ ・ tag:latest tag:14.04 ・ ・ tag:latest tag:19.1 ・ ・ Ship

Slide 20

Slide 20 text

Run(実行) Docker Imageを実行する (Buildイメージを直接ローカルで実行、レジストリ格納のイメージを実行) ローカルマシン、物理サーバ、クラウドなど多種多様な環境で実行できる 20 ローカルマシン 物理サーバ クラウドサービス

Slide 21

Slide 21 text

Build、Ship、Run Build(構築)、Ship(共有)、Run(実行)はDockerが掲げるスローガンであり Dockerが提供する基本機能 21 コンテナエンジン(dockerd) ハードウェア pull コンテナー コンテナレジストリ (Docker Hub) CentOS リポジトリ Ubuntu リポジトリ Container Image push Nginx リポジトリ カーネル Run Build Container Image Container Image docker image pull docker image push Dockerfile tag:latest tag:6.7 ・ ・ tag:latest tag:14.04 ・ ・ tag:latest tag:19.1 ・ ・ Ship

Slide 22

Slide 22 text

コンテナオーケストレーション コンテナ技術入門

Slide 23

Slide 23 text

コンテナオーケストレーション システムのほとんどは、複数のホストOS、コンテナ(アプリケーション)環境が 稼働する それらホスト、コンテナの状態監視(停止確認、スケールアウト)や無停止での デプロイなどよりEnterpriseな機能が本番環境では求められる Kubernetes(CNCF管理、多数企業コミュニティで開発) 略称:k8s Google社内のBorgからインスパイアされたツール 23

Slide 24

Slide 24 text

・コンテナのスケジューリング ・ローリングアップデート ・オートスケーリング ・死活監視 ・コンテナの自動修復 ・サービスディスカバリ ・ロードバランシング ・ログ管理 ・その他多彩なエコシステムとの連携 コンテナオーケストレーション ホストOS(ノード) ホストOS(ノード) ホストOS(ノード) Kubernetesクラスター コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) ギリシャ語で「船の操舵手」などの意味 各ホストOS、コンテナ群をクラスター化して一括管理 主な役割 ・頻繁なアプリケーションのデプロイが可能なシ ステム基盤 ・無停止によるリリース、高可用なシステム基盤 ・負荷に応じた伸縮自在なシステム基盤 24

Slide 25

Slide 25 text

コンテナを取り巻く時代背景 コンテナ技術入門

Slide 26

Slide 26 text

コンテナの簡単な歴史 26 ・1979 ~ 2007年 コンテナの基本となる様々な技術がリリース ・2008年 LXC(Linux Containers)最初のLinuxコンテナマネージャー ・2013年 DockerがOSSとして公開 コンテナ管理のエコシステムの充実 ・2015年 OCI(Open Container Initiative)発足 標準規格の策定が開始 Kubernetesリリース CNCF(Cloud Native Conputing Foundation)設立 ・2017年~ コンテナや周りのエコシステムの成熟

Slide 27

Slide 27 text

様々な時代背景がコンテナの普及を後押し コンテナを取り巻く時代背景 アジャイル開発 DevOps マイクロサービス 機械学習 IoT ︙ 開発スピードの短縮化 組織サイロ化の脱却、CI・CDと相性◎ マイクロサービスとの相性◎ エコシステムの充実 大量に必要な処理リソースを効率的に処理 27

Slide 28

Slide 28 text

IDCの調査結果 Q:あなたの会社ではコンテナを導入していますか? 調査年別(2016~2021年) 1 1 IDC Japan 「2021年国内クラウドネイティブ技術ユーザー動向調査」(JPJ46566321) 28

Slide 29

Slide 29 text

IDCの調査結果 Q:あなたの会社ではコンテナを導入していますか? - ITユーザー企業 1 1 IDC Japan 「2021年国内クラウドネイティブ技術ユーザー動向調査」(JPJ46566321)29

Slide 30

Slide 30 text

ご清聴ありがとうございました コンテナ技術入門