Docker 勉強会-レベル0からの脱出 -MASUMI YOSHIDA
対象者
Dockerとやらをこれからまったくはじめて使うエンジニア
エンジニアじゃないパソコンうまいひとでDockerを使う必要がある人
デザイナー
ディレクター
その他チョットデキル人
よくわからんけどイマドキっぽいのでサワリだけでも知りたい人
あなただれ
しがないその辺にゴロゴロいるレベルのエンジニア
新卒でSIerに入りインフラ系プロジェクトを経験するうちにそっち方面の人へ
AWSを使い始めてからは社内ではAWSおじさん
AWS歴はもう2年半になってしまった…
本当はもっとプログラミングとかしたい系
将来はホームページとか作って売って楽しく暮らしたい
Agenda
Docker is 何
仮想環境のあゆみ
なぜDockerがいいのかなぜいまDockerなのか
デメリットはちゃんとあるよ
Dockerの構成要素とその周辺について
ヘイシャでのDockerを使った開発
インストール方法 Docker for Mac
インストール方法 Docker Machine
Docker is 何
仮想環境構築ツール!
「仮想マシン」ではなくて「コンテナ」
OS/ハイパーバイザ<仮想サーバ>
OS(全部)<仮想マシン>
OS(全部)<仮想マシン>
アプリや
コンテンツ
アプリや
コンテンツ
OS
<Dockerサーバ>
OS(最低限)<Dockerコンテナ>
OS(最低限)<Dockerコンテナ>
アプリや
コンテンツ
アプリや
コンテンツ
仮想環境のあゆみ
(けっこう大昔)コンテナによる仮想環境の提供
メインフレームはいまでいうスパコンみたいなやつ
1台うん千万円とか平気でする
(当時にしては)かなり高スペック
みんなで使わないともったいない
リソース領域を分割しよう
コンテナの誕生
メインフレーム(うん千万円とか)
領域A
領域B
領域C
領域D
仮想環境のあゆみ
仮想マシンの勃興
1972年にIBMがメインフレーム用にリリースしたSystem/370
1998年ごろスタンフォード大学のMendel Rosenblum教授のグループがメインフレームで行っていた仮想化技術
1999年ごろ VMware社がLinux OSで仮想マシンを動かすVMware Workstationをリリース
2000年代はVMware社、Citrix社などによる仮想マシンシステムが大流行
Microsoft Hyper-V など大手が追従
2015年くらいまで仮想マシン全盛期猫も杓子も
Dockerがいきなり現れる
OS/ハイパーバイザ<仮想サーバ>
OS(全部)<仮想マシン>
OS(全部)<仮想マシン>
アプリや
コンテンツ
アプリや
コンテンツ
仮想環境のあゆみ
Dockerの発明とコンテナの復権
2013年3月13日にDocker初リリース
2015年ごろ日本のエンジニア界隈で騒がれ出す
2016年は「Docker元年」としてエンジニアが盛り上がる
利用の手軽さから開発環境は仮想マシンからDockerコンテナに一気に置き換わる
本番でも使われ出す(有名どころだとWantedlyさんとか)
https://www.wantedly.com/companies/wantedly/post_articles/27548
2017年現在 Dockerは開発環境のデファクトスタンダードへ(本番利用も増)
ヘイシャもついに本番環境へDocker(Amazon ECS)を投入!
なぜDockerがいいのかなぜいまDockerなのか
人のコンテナを使うだけならすぐ始められる
docker pull nginxdocker run -d -p 80:80 nginx
Webブラウザで localhostにアクセス
なぜ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
なぜDockerがいいのかなぜいまDockerなのか
周辺ツールが整ってきたので利便性が良い
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~https://www.slideshare.net/zembutsu/docker-expectations-and-reality
なぜDockerがいいのかなぜいまDockerなのか
他の仮想環境に比べて軽くて早い
OSの部分を自分でやらないから
実務経験による体感値
EC2を新たに起動:5分程度
ECSにコンテナを新たに起動:数十秒
驚速のコンテナ起動!GKEでのPod生成時間計測結果発表http://www.apps-gcp.com/gke-pod-creation-time/ #apps_gcp #gcpja #gcpug
デメリットはちゃんとあるよ
MacだとWindowsServerやWindows10などを動かすことができない
カーネル(OSのコアの部分)をホストと共有するのでその点に関するコツが必要だったりトラブルが起こったりする
普通のサーバに加えて覚えることが多くなり初学者には苦しいかもしれない
いままでの仮想サーバと考え方が変わるのでシステム運用の考え方や手順も変わる
Dockerと構成要素・周辺ツール(初級編)
Docker
会社名でありブランド名でありアプリケーション
コンテナを扱うのでコンテナを運ぶ船のイメージ
エンジニアは動物化したがるイキモノなのでクジラのフレンズ
かわいい
Dockerと構成要素・周辺ツール(初級編)
Dockerfile
コンテナを作るためのレシピ
コンテナ単位で書く
本当はもっと長い
Dockerと構成要素・周辺ツール(初級編)
DockerHub
公式コンテナイメージ共有サイト
コンテナはリポジトリに登録して他の人と共有できる
共有を限定したい場合は
DokcerHubやQuay.ioにお金を払う
自分でリポジトリサーバを運用する
Dockerと構成要素・周辺ツール(初級編)
docker-compose
いろんなコンテナを組み合わせて1つのWebサービスを立ち上げるためのツールとレシピ
(参考)Docker Compose で CakePHPの開発環境を作る -座敷牢日誌http://zashikiro.hateblo.jp/entry/2016/08/15/224612
MacなどのPC
Dockerと構成要素・周辺ツール(初級編)
docker-machine
PC内に仮想マシンを作ってその中にコンテナを作る
Docker Machine
Oracle VirtualBox
Dokcerサーバ(Linux)
Dokcerサーバ(Linux)
Docker for (Mac|Win)
コンテナ
コンテナ
コンテナ
コンテナ
コンテナ
コンテナ
コンテナ
コンテナ
コンテナ
ECSクラスター
ECSインスタンス
Dockerと構成要素・周辺ツール(初級編)
AWS ECS(EC2 Container Service)
AWSが提供するDocker運用環境
専用用語(システムの単位)があるので覚える必要あり
クラスター
サービス
ECSインスタンス
タスク定義
タスク
ECSインスタンス
ECSサービス
ECSタスク定義
ECSタスク
ECSタスク定義
ECSタスク
ECSタスク ECSタスク
Dockerと構成要素・周辺ツール(初級編)
AWS ECR(EC2 Container Registry)
AWSが提供するプライベートリポジトリ
AWSユーザのみ利用可能
AWSを利用して入ればDockerHubやQuai.ioなどを利用しなくてもこちらを利用することで代替となる
初期費用なし
データ転送量と保存容量で課金
月額500MBまでは保存容量無料 ECRのアイコン
ヘイシャでのDockerを使った開発
Docker for Mac か Docker Machine か
基本的にDokccer Machineを使います!
Docker を AWS で起動する方法
Docker on EC2 と ECSがありますが基本後者!
ECSとCircleCIを連携させた自動的なリリースでのDockerを使った開発
Gihthubの所定のブランチにソースコードをマージ
CircleCIが発動
Dockerイメージを作ってECRにプッシュ
ECRにプッシュしたイメージをpullしてECSにコンテナを起動
インストール方法 Docker for Mac
https://docs.docker.com/docker-for-mac/install/
インストール方法 Docker Machine
https://docs.docker.com/machine/install-machine/
おわりです
Appendix
コマンドとか具体的に知りたいのですが…
Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) - paiza開発日誌http://paiza.hatenablog.com/entry/docker_intro
参考文献 コンテナはクラウド進化の鍵--その歴史と「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