Share
Embed
コンテナ技術入門
[フィンテックエンジニア養成勉強会(コンテナ技術特集)登壇資料]
土居 幸平(どい こうへい)
昨今の急速なビジネス変化に対応するツールとしてDockerコンテナは多くのサービスに利用され始めています。
そんなDockerコンテナの習得に乗り遅れた方、コンテナって何だろう?とお悩みの初学者の方向けにコンテナ・Dockerの基礎的な部分をお話します。
AP Communications Co., Ltd.
June 04, 2021
Transcript
30 slides
-
プロフィール 土居 幸平(Doi Kohei) Twitter:@pyorne 2012~2020年 大手SIer、中小SIerにてインフラエンジニア(サーバ/ネットワーク)として従事 文教、メディア系を中心にシステム構築に携わる 2021年~ クラウドネイティブな世界へ飛び込むべくエーピーコミュニケーションズへJoin
Azureのコンテナサービスを利用したシステム構築のコンサル/企業向けトレーニングなどを担当 会社名:エーピーコミュニケーションズ ①DevOps支援~受託開発、上流~下流工程、オンプレ、IaaS、PaaS、コンテナまで幅広い技術経験 ②Docker Enterprise事業を買収したMirantisと戦略提携を結んだ技術基盤力 ③日本マイクロソフトが提供する「Cloud Native Dojo」の提携パートナー ④書籍・執筆活動や技術コミュニティへの参加、登壇などエンジニアドリブンな活動 2 -
ハイパーバイザー 仮想マシンとの比較 ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ
(プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) よく似た概念に従来の仮想マシンがある コンテナの実態は、プロセスである 仮想マシンのアプリケーション ⇒ ゲストOS上のカーネルで実行 1 コンテナのアプリケーション ⇒ ホストOS上のカーネルで実行 7 1 https://ascii.jp/elem/000/000/415/415665/ 正確には少し異なりますが、ここでは比較のためあえてこういう表現 にしております -
ハイパーバイザー 仮想マシンとの比較(隔離性) ゲストOS (カーネル) ハードウェア 仮想マシン 仮想マシン ホストOS(カーネル) ハードウェア コンテナ
(プロセス) 従来の仮想マシンのイメージ図 コンテナのイメージ図 アプリケーション ライブラリ ゲストOS (カーネル) アプリケーション ライブラリ アプリケーション ライブラリ アプリケーション ライブラリ コンテナ (プロセス) プロセス同士の干渉や影響が懸念 9 仮想マシン単位で分離されている -
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 -
Build(構築) Dockerコンテナイメージを作成する 作成は主にDocerfile(イメージの構成内容をまとめて記述するテキスト形式のフ ァイル)を用いてコンテナイメージへの複数作業を一括で行う docker image buildコマンドで、Dockerfileの上から 順番に実行 同じコンテナイメージがBuildされる 16
アプリケーション ライブラリ コンテナ (プロセス) Dockerコンテナイメージ -
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 -
Dockerコンテナはコンテナレジストリでイメージを共有することでチーム開発を高速に 加速化できる 作成したイメージは軽量でパッケージング化されており、異種OSでも動作するため、ロ ーカル、仮想、クラウド環境など場所を問わず移植性が高い ベースイメージ (必要最小限) Ship(共有) アプリケーション コンテナ (プロセス)
ベースイメージ (必要最小限) イメージレジストリ (Docker Hubなど) 開発イメージ チーム内の開発者 開発ベンダー 本番イメージ 本番環境 (ローカル、クラウド場所問わず) 18 FROM: Docker image push Docker image pull -
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 -
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 -
・コンテナのスケジューリング ・ローリングアップデート ・オートスケーリング ・死活監視 ・コンテナの自動修復 ・サービスディスカバリ ・ロードバランシング ・ログ管理 ・その他多彩なエコシステムとの連携 コンテナオーケストレーション
ホストOS(ノード) ホストOS(ノード) ホストOS(ノード) Kubernetesクラスター コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) コンテナ群 (アプリケーション群) ギリシャ語で「船の操舵手」などの意味 各ホストOS、コンテナ群をクラスター化して一括管理 主な役割 ・頻繁なアプリケーションのデプロイが可能なシ ステム基盤 ・無停止によるリリース、高可用なシステム基盤 ・負荷に応じた伸縮自在なシステム基盤 24 -
コンテナの簡単な歴史 26 ・1979 ~ 2007年 コンテナの基本となる様々な技術がリリース ・2008年 LXC(Linux Containers)最初のLinuxコンテナマネージャー ・2013年
DockerがOSSとして公開 コンテナ管理のエコシステムの充実 ・2015年 OCI(Open Container Initiative)発足 標準規格の策定が開始 Kubernetesリリース CNCF(Cloud Native Conputing Foundation)設立 ・2017年~ コンテナや周りのエコシステムの成熟 -
様々な時代背景がコンテナの普及を後押し コンテナを取り巻く時代背景 アジャイル開発 DevOps マイクロサービス 機械学習 IoT ︙ 開発スピードの短縮化 組織サイロ化の脱却、CI・CDと相性◎
マイクロサービスとの相性◎ エコシステムの充実 大量に必要な処理リソースを効率的に処理 27