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

コンテナ研修(コンテナ基礎編)【ミクシィ22新卒技術研修】

 コンテナ研修(コンテナ基礎編)【ミクシィ22新卒技術研修】

22新卒技術研修で実施したコンテナ研修の講義資料(コンテナ基礎編)です。
動画:https://youtu.be/qYp8Vvevcok

Kubernates基礎編
https://speakerdeck.com/mixi_engineers/2022-container-training-number-02-kubernates

※ハンズオン環境は提供していないので、ハンズオンを実際に試していただくことはできません。

MIXI ENGINEERS

April 22, 2022
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Programming

Transcript

  1. 自己紹介
 • 栗原 尚弘
 ◦ 18新卒
 • 社歴
 ◦ ライブエクスペリエンス事業本部

    18-20半ば
 ◦ 開発本部CTO室SREG 20半ば-今
 • Androidエンジニアとして入社しましたが
 紆余曲折あり今は、クラウドインフラを用いた
 インフラの構築&運用、ゲームの認証認可基盤の運用、
 ETLとDWH構築をやっています。
 • SNS
 ◦ https://www.instagram.com/k__naohiro

  2. 自己紹介 
 • 浅野 大我
 ◦ 20新卒
 ◦ などと言いつつ2018〜2019までインターンや内定者バイトをしていました
 •

    モンスト事業本部 ゲーム運営部
 モンストサーバ2グループ サーバチーム
 ◦ 兼務: 開発本部 セキュリティ室(4月〜)
 • モンストの開発や運用を
 していたりします
 • https://twitter.com/atpons
 • Google CloudのProfessional Cloud Architectを最近(?)とりました

  3. docker architecture (一部省略)
 docker
 docker enging
 runc
 docker cli
 docker

    api
 containerd
 volumes
 buildkit
 networking
 ここの技術について知って欲しい

  4. runc
 • OCI(Open Container Initiative)のリファレンス実装
 • containerdで利用されている
 • linux namespace,

    cgroups等をコンテナでも利用できるようにする
 ◦ macOSには上記に相当するものが無いのでコンテナを利用したい場合は
 linuxを動かす必要がある
 ◦ windowsにはHCS(Host Compute Service)といった上記に相当するものが実装されていてwindows containerを起動する際に利用される

  5. Open Container Initiative
 • コンテナの業界標準となる仕様を決めている
 ◦ Google, AWS, Microsoft, Docker等数々の名だたる企業が参加している


    • runtime-spec, image-specの二つの仕様がある
 ◦ runtime-spec
 ▪ コンテナのライフサイクル等動作に関わる標準化 
 ◦ image-spec
 ▪ コンテナイメージ仕様の標準化

  6. なぜdockerを使うのか?
 • コンテナを利用するためにはlinuxを動かす必要がある
 ◦ macOS上でVMかhypervisorなどを利用する必要がある
 ◦ docker desktopではその当たりが利用者に気にしなくても使える仕組みになっている
 ▪ Mac

    OS上でdocker desktopを起動するとappleのhypervisor frameworkを利用しlinuxを起動している 
 ▪ kernel patches, security fixesは良い感じにdockerが適用している 
 ▪ この楽さがここまで普及した理由の一つだと個人的には思っている 

  7. step1のファイル構成
 • Dockerfile
 • コンテナの起動に必要
 • index.html
 • 今回配信する静的ファイル
 •

    nginx.conf
 • 静的ファイルを配信するのに必要な
 nginxの設定
 • コンテナと関係ないのでこの内容には
 触れません

  8. step1のディレクトリに移動しコンテナイメージの作成
 Dockerfile
 コンテナイメージ
 build
 docker build -t $IMAGE_NAME . イメージの作成


    タグの命名
 (これが無いと何のイメージを作成したのか分からなくなる)
 contextの指定

  9. コンテナを止めてみよう
 • docker container ls
 • 起動しているコンテナを一覧表示する
 • docker stop

    $CONTAINER_ID
 • 指定したコンテナを止める
 • (例) docker stop 9b18a51729d3

  10. docker composeとは
 • 開発環境で複数のコンテナを動かすときに使うことが多い
 • 何のコンテナがどのように動いているのかが定義されていたりコンテナの起動順序を指定で きたりする
 • AWS ECSではdocker

    composeのファイルをそのまま利用できるサービスを提供している
 ◦ https://aws.amazon.com/jp/blogs/news/automated-software-delivery-using-docker-compose-and-a mazon-ecs/
 

  11. 実際に動かして見よう
 • コマンド実行時のディレクトリは 2021BeginnerTraningContainer/step3 直下を想定していま す
 ◦ M1 Macの方は必ずdocker-compose.ymlの33行目のコメントアウトを外してください
 •

    docker compose build
 ◦ docker-compose.ymlの内容に沿ってイメージを作成
 • docker compose up -d
 ◦ docker-compose.ymlの内容に沿ってコンテナの起動
 • docker compose exec app ./bin/generator
 ◦ appコンテナにあるgeneratorを起動し
 databaseのmigrationを行います
 • docker compose stop
 ◦ docker-compose.ymlに定義されているコンテナが停止する