27
Docker 勉強会 - レベル0からの脱出 - MASUMI YOSHIDA

Docker study for beginner in My Company 2017/10/19

Embed Size (px)

Citation preview

Page 1: Docker study for beginner in My Company 2017/10/19

Docker 勉強会-レベル0からの脱出 -MASUMI YOSHIDA

Page 2: Docker study for beginner in My Company 2017/10/19

対象者

Dockerとやらをこれからまったくはじめて使うエンジニア

エンジニアじゃないパソコンうまいひとでDockerを使う必要がある人

デザイナー

ディレクター

その他チョットデキル人

よくわからんけどイマドキっぽいのでサワリだけでも知りたい人

Page 3: Docker study for beginner in My Company 2017/10/19

あなただれ

しがないその辺にゴロゴロいるレベルのエンジニア

新卒でSIerに入りインフラ系プロジェクトを経験するうちにそっち方面の人へ

AWSを使い始めてからは社内ではAWSおじさん

AWS歴はもう2年半になってしまった…

本当はもっとプログラミングとかしたい系

将来はホームページとか作って売って楽しく暮らしたい

Page 4: Docker study for beginner in My Company 2017/10/19

Agenda

Docker is 何

仮想環境のあゆみ

なぜDockerがいいのかなぜいまDockerなのか

デメリットはちゃんとあるよ

Dockerの構成要素とその周辺について

ヘイシャでのDockerを使った開発

インストール方法 Docker for Mac

インストール方法 Docker Machine

Page 5: Docker study for beginner in My Company 2017/10/19

Docker is 何

仮想環境構築ツール!

「仮想マシン」ではなくて「コンテナ」

OS/ハイパーバイザ<仮想サーバ>

OS(全部)<仮想マシン>

OS(全部)<仮想マシン>

アプリや

コンテンツ

アプリや

コンテンツ

OS

<Dockerサーバ>

OS(最低限)<Dockerコンテナ>

OS(最低限)<Dockerコンテナ>

アプリや

コンテンツ

アプリや

コンテンツ

Page 6: Docker study for beginner in My Company 2017/10/19

仮想環境のあゆみ

(けっこう大昔)コンテナによる仮想環境の提供

メインフレームはいまでいうスパコンみたいなやつ

1台うん千万円とか平気でする

(当時にしては)かなり高スペック

みんなで使わないともったいない

リソース領域を分割しよう

コンテナの誕生

メインフレーム(うん千万円とか)

領域A

領域B

領域C

領域D

Page 7: Docker study for beginner in My Company 2017/10/19

仮想環境のあゆみ

仮想マシンの勃興

1972年にIBMがメインフレーム用にリリースしたSystem/370

1998年ごろスタンフォード大学のMendel Rosenblum教授のグループがメインフレームで行っていた仮想化技術

1999年ごろ VMware社がLinux OSで仮想マシンを動かすVMware Workstationをリリース

2000年代はVMware社、Citrix社などによる仮想マシンシステムが大流行

Microsoft Hyper-V など大手が追従

2015年くらいまで仮想マシン全盛期猫も杓子も

Dockerがいきなり現れる

OS/ハイパーバイザ<仮想サーバ>

OS(全部)<仮想マシン>

OS(全部)<仮想マシン>

アプリや

コンテンツ

アプリや

コンテンツ

Page 8: Docker study for beginner in My Company 2017/10/19

仮想環境のあゆみ

Dockerの発明とコンテナの復権

2013年3月13日にDocker初リリース

2015年ごろ日本のエンジニア界隈で騒がれ出す

2016年は「Docker元年」としてエンジニアが盛り上がる

利用の手軽さから開発環境は仮想マシンからDockerコンテナに一気に置き換わる

本番でも使われ出す(有名どころだとWantedlyさんとか)

https://www.wantedly.com/companies/wantedly/post_articles/27548

2017年現在 Dockerは開発環境のデファクトスタンダードへ(本番利用も増)

ヘイシャもついに本番環境へDocker(Amazon ECS)を投入!

Page 9: Docker study for beginner in My Company 2017/10/19

なぜDockerがいいのかなぜいまDockerなのか

人のコンテナを使うだけならすぐ始められる

docker pull nginxdocker run -d -p 80:80 nginx

Webブラウザで localhostにアクセス

Page 10: Docker study for beginner in My Company 2017/10/19

なぜDockerがいいのかなぜいまDockerなのか

Dockerfileやcompose.ymlなどにより移植性が高い

サーバがソースコードになりファイルとして管理できる

アプリケーションのソースコードと同様にリポジトリで変更管理ができる

Dockerfileの例(Nginx公式)https://github.com/nginxinc/docker-nginx/blob/1d2e2ccae2f6e478f628f4091d8a5c36a122a157/mainline/stretch/Dockerfile

docker-composeの例(Zabbix 3.0)https://qiita.com/zembutsu/items/686b99be90d72688aee8

Page 11: Docker study for beginner in My Company 2017/10/19

なぜDockerがいいのかなぜいまDockerなのか

周辺ツールが整ってきたので利便性が良い

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~https://www.slideshare.net/zembutsu/docker-expectations-and-reality

Page 12: Docker study for beginner in My Company 2017/10/19

なぜDockerがいいのかなぜいまDockerなのか

他の仮想環境に比べて軽くて早い

OSの部分を自分でやらないから

実務経験による体感値

EC2を新たに起動:5分程度

ECSにコンテナを新たに起動:数十秒

驚速のコンテナ起動!GKEでのPod生成時間計測結果発表http://www.apps-gcp.com/gke-pod-creation-time/ #apps_gcp #gcpja #gcpug

Page 13: Docker study for beginner in My Company 2017/10/19

デメリットはちゃんとあるよ

MacだとWindowsServerやWindows10などを動かすことができない

カーネル(OSのコアの部分)をホストと共有するのでその点に関するコツが必要だったりトラブルが起こったりする

普通のサーバに加えて覚えることが多くなり初学者には苦しいかもしれない

いままでの仮想サーバと考え方が変わるのでシステム運用の考え方や手順も変わる

Page 14: Docker study for beginner in My Company 2017/10/19

Dockerと構成要素・周辺ツール(初級編)

Docker

会社名でありブランド名でありアプリケーション

コンテナを扱うのでコンテナを運ぶ船のイメージ

エンジニアは動物化したがるイキモノなのでクジラのフレンズ

かわいい

Page 15: Docker study for beginner in My Company 2017/10/19

Dockerと構成要素・周辺ツール(初級編)

Dockerfile

コンテナを作るためのレシピ

コンテナ単位で書く

本当はもっと長い

Page 16: Docker study for beginner in My Company 2017/10/19

Dockerと構成要素・周辺ツール(初級編)

DockerHub

公式コンテナイメージ共有サイト

コンテナはリポジトリに登録して他の人と共有できる

共有を限定したい場合は

DokcerHubやQuay.ioにお金を払う

自分でリポジトリサーバを運用する

Page 17: Docker study for beginner in My Company 2017/10/19

Dockerと構成要素・周辺ツール(初級編)

docker-compose

いろんなコンテナを組み合わせて1つのWebサービスを立ち上げるためのツールとレシピ

(参考)Docker Compose で CakePHPの開発環境を作る -座敷牢日誌http://zashikiro.hateblo.jp/entry/2016/08/15/224612

Page 18: Docker study for beginner in My Company 2017/10/19

MacなどのPC

Dockerと構成要素・周辺ツール(初級編)

docker-machine

PC内に仮想マシンを作ってその中にコンテナを作る

Docker Machine

Oracle VirtualBox

Dokcerサーバ(Linux)

Dokcerサーバ(Linux)

Docker for (Mac|Win)

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

コンテナ

Page 19: Docker study for beginner in My Company 2017/10/19

ECSクラスター

ECSインスタンス

Dockerと構成要素・周辺ツール(初級編)

AWS ECS(EC2 Container Service)

AWSが提供するDocker運用環境

専用用語(システムの単位)があるので覚える必要あり

クラスター

サービス

ECSインスタンス

タスク定義

タスク

ECSインスタンス

ECSサービス

ECSタスク定義

ECSタスク

ECSタスク定義

ECSタスク

ECSタスク ECSタスク

Page 20: Docker study for beginner in My Company 2017/10/19

Dockerと構成要素・周辺ツール(初級編)

AWS ECR(EC2 Container Registry)

AWSが提供するプライベートリポジトリ

AWSユーザのみ利用可能

AWSを利用して入ればDockerHubやQuai.ioなどを利用しなくてもこちらを利用することで代替となる

初期費用なし

データ転送量と保存容量で課金

月額500MBまでは保存容量無料 ECRのアイコン

Page 21: Docker study for beginner in My Company 2017/10/19

ヘイシャでのDockerを使った開発

Docker for Mac か Docker Machine か

基本的にDokccer Machineを使います!

Docker を AWS で起動する方法

Docker on EC2 と ECSがありますが基本後者!

ECSとCircleCIを連携させた自動的なリリースでのDockerを使った開発

Gihthubの所定のブランチにソースコードをマージ

CircleCIが発動

Dockerイメージを作ってECRにプッシュ

ECRにプッシュしたイメージをpullしてECSにコンテナを起動

Page 22: Docker study for beginner in My Company 2017/10/19

インストール方法 Docker for Mac

https://docs.docker.com/docker-for-mac/install/

Page 23: Docker study for beginner in My Company 2017/10/19

インストール方法 Docker Machine

https://docs.docker.com/machine/install-machine/

Page 24: Docker study for beginner in My Company 2017/10/19

おわりです

Page 25: Docker study for beginner in My Company 2017/10/19

Appendix

Page 26: Docker study for beginner in My Company 2017/10/19

コマンドとか具体的に知りたいのですが…

Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) - paiza開発日誌http://paiza.hatenablog.com/entry/docker_intro

Page 27: Docker study for beginner in My Company 2017/10/19

参考文献 コンテナはクラウド進化の鍵--その歴史と「Docker」の隆盛

https://japan.zdnet.com/article/35063899/ @zdnet_japanさんから

Dockerのメリット・デメリット http://docker.yuichi.com/about/strength/index.html

Docker を Production で使い続ける理由 | Wantedly Engineer Blog by @koudaiiihttps://www.wantedly.com/companies/wantedly/post_articles/27548

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~https://www.slideshare.net/zembutsu/docker-expectations-and-reality

docker-nginx/Dockerfile at 1d2e2ccae2f6e478f628f4091d8a5c36a122a157 · nginxinc/docker-nginx https://github.com/nginxinc/docker-nginx/blob/1d2e2ccae2f6e478f628f4091d8a5c36a122a157/mainline/stretch/Dockerfile

Zabbix 3.0をDocker Composeで一度に実行する方法 - Qiitahttps://qiita.com/zembutsu/items/686b99be90d72688aee8

Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) - paiza開発日誌http://paiza.hatenablog.com/entry/docker_intro

驚速のコンテナ起動!GKEでのPod生成時間計測結果発表 http://www.apps-gcp.com/gke-pod-creation-time/ #apps_gcp #gcpja #gcpug