Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテナ技術入門

 コンテナ技術入門

[フィンテックエンジニア養成勉強会(コンテナ技術特集)登壇資料]
土居 幸平(どい こうへい)

昨今の急速なビジネス変化に対応するツールとしてDockerコンテナは多くのサービスに利用され始めています。
そんなDockerコンテナの習得に乗り遅れた方、コンテナって何だろう?とお悩みの初学者の方向けにコンテナ・Dockerの基礎的な部分をお話します。

More Decks by AP Communications Co., Ltd.

Other Decks in Technology

Transcript

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

  2. プロフィール 土居 幸平(Doi Kohei) Twitter:@pyorne 2012~2020年 大手SIer、中小SIerにてインフラエンジニア(サーバ/ネットワーク)として従事 文教、メディア系を中心にシステム構築に携わる 2021年~ クラウドネイティブな世界へ飛び込むべくエーピーコミュニケーションズへJoin

    Azureのコンテナサービスを利用したシステム構築のコンサル/企業向けトレーニングなどを担当 会社名:エーピーコミュニケーションズ ①DevOps支援~受託開発、上流~下流工程、オンプレ、IaaS、PaaS、コンテナまで幅広い技術経験 ②Docker Enterprise事業を買収したMirantisと戦略提携を結んだ技術基盤力 ③日本マイクロソフトが提供する「Cloud Native Dojo」の提携パートナー ④書籍・執筆活動や技術コミュニティへの参加、登壇などエンジニアドリブンな活動 2
  3. 今日お話すること ・コンテナ、Dockerて何? ・Dockerの基本(Build、Ship、Run) ・コンテナのオーケストレーションの概要 ・コンテナを取り巻く時代背景 3

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

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

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

    - コンテナ技術の仕組みと歴史| Red Hat 6
  7. ハイパーバイザー 仮想マシンとの比較 ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ

    (プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) よく似た概念に従来の仮想マシンがある コンテナの実態は、プロセスである 仮想マシンのアプリケーション ⇒ ゲストOS上のカーネルで実行 1 コンテナのアプリケーション ⇒ ホストOS上のカーネルで実行 7 1 https://ascii.jp/elem/000/000/415/415665/ 正確には少し異なりますが、ここでは比較のためあえてこういう表現 にしております
  8. 仮想マシンとの比較 貨物輸送で使われるコンテナをイメージするとわかりやすい コンテナの特徴 ・効率良く配置(ハードウェアリソースを有効活用)できる ・持ち運びやすい(軽量、異種環境でも動作可能) ・中身が他のコンテナと混ざらない 8 従来の仮想マシンイメージ コンテナのイメージ図 コンテナをアプリケーション

    船がホストOS(カーネル)
  9. ハイパーバイザー 仮想マシンとの比較(隔離性) ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ

    (プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) プロセス同士の干渉や影響が懸念 9 仮想マシン単位で分離されている
  10. コンテナを構成する技術要素とは Linuxカーネル技術である以下2つの要素で主に実現 ・namespace(名前空間) ユーザープロセスのグループ化、ファイルシステム、ネットワーク設定の分離 ・cgroups(コントロールグループ) グループ(コンテナ)に対しCPU、メモリ等ハードウェアリソースの割当 10

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

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

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

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

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

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

    ベースイメージ (必要最小限) イメージレジストリ (Docker Hubなど) 開発イメージ チーム内の開発者 開発ベンダー 本番イメージ 本番環境 (ローカル、クラウド場所問わず) 18 FROM: Docker image push Docker image pull
  19. 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
  20. Run(実行) Docker Imageを実行する (Buildイメージを直接ローカルで実行、レジストリ格納のイメージを実行) ローカルマシン、物理サーバ、クラウドなど多種多様な環境で実行できる 20 ローカルマシン 物理サーバ クラウドサービス

  21. 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
  22. コンテナオーケストレーション コンテナ技術入門

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

  24. ・コンテナのスケジューリング ・ローリングアップデート ・オートスケーリング ・死活監視 ・コンテナの自動修復 ・サービスディスカバリ ・ロードバランシング ・ログ管理 ・その他多彩なエコシステムとの連携 コンテナオーケストレーション

    ホストOS(ノード) ホストOS(ノード) ホストOS(ノード) Kubernetesクラスター コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) ギリシャ語で「船の操舵手」などの意味 各ホストOS、コンテナ群をクラスター化して一括管理 主な役割 ・頻繁なアプリケーションのデプロイが可能なシ ステム基盤 ・無停止によるリリース、高可用なシステム基盤 ・負荷に応じた伸縮自在なシステム基盤 24
  25. コンテナを取り巻く時代背景 コンテナ技術入門

  26. コンテナの簡単な歴史 26 ・1979 ~ 2007年 コンテナの基本となる様々な技術がリリース ・2008年 LXC(Linux Containers)最初のLinuxコンテナマネージャー ・2013年

    DockerがOSSとして公開 コンテナ管理のエコシステムの充実 ・2015年 OCI(Open Container Initiative)発足 標準規格の策定が開始 Kubernetesリリース CNCF(Cloud Native Conputing Foundation)設立 ・2017年~ コンテナや周りのエコシステムの成熟
  27. 様々な時代背景がコンテナの普及を後押し コンテナを取り巻く時代背景 アジャイル開発 DevOps マイクロサービス 機械学習 IoT ︙ 開発スピードの短縮化 組織サイロ化の脱却、CI・CDと相性◎

    マイクロサービスとの相性◎ エコシステムの充実 大量に必要な処理リソースを効率的に処理 27
  28. IDCの調査結果 Q:あなたの会社ではコンテナを導入していますか? 調査年別(2016~2021年) 1 1 IDC Japan 「2021年国内クラウドネイティブ技術ユーザー動向調査」(JPJ46566321) 28

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

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