Docker_jtf2014
-
Upload
- -
Category
Technology
-
view
1.364 -
download
0
Transcript of Docker_jtf2014
Docker ~JTF2014~
@koudaiii 2014.06.22
About me
Sakabe kodai
• @koudaiii
• github.com/koudaiii
• qiita.com/koudaiii
• koudaiii.hatenablog.com
• Community
• TISMatsuri
• Jaws-ug 千葉
• Devlove甲子園
an open source project to pack, ship and run any application as a lightweight container
www.docker.io
ContainerDocker is a shipping container system for code
Static website! Web frontend !User DB! Queue! Analytics DB!
Development VM!
QA server! Public Cloud! Contributor’s laptop!
Mul$p
licity
*of*Stacks*
Mul$p
licity
*of*
hardware*
environm
ents*
Production Cluster!Customer Data Center!
Do*services*and*apps*interact*
appropriately?*
Can*I*migrate*
smoothly*and*quickly*
…that can be manipulated using standard operations and run consistently on virtually any hardware platform !
An engine that enables any payload to be encapsulated as a lightweight, portable, self-sufficient container…!
VM・・・仮想的なハードウェアの環境
コンテナ・・・OSレベルの仮想化第2回 コンテナの仕組みとLinuxカーネルのコンテナ機能[1]名前空間とは?
http://gihyo.jp/admin/serial/01/linux_containers/0002 ハイパーバイザー型とコンテナー型の仮想化の違い{http://bit.ly/1lWFveH}
OS+ハイパーバイザ
VM
OS
プロセス
プロセス
VM
OS
プロセス
プロセス
VM
OS
プロセス
プロセス
物理マシン
OS
隔離空間
プロセス
プロセス
隔離空間
プロセス
プロセス
プロセス
プロセス
物理マシン
Container vs. VMsLinuxのkernel 3.8よりもつ機能
OSレベルの仮想化実現
App#A#######
Hypervisor#(Type#2)#
Host#OS#
Server#
####
Guest#OS#####
####
Bins/#Libs#####
App#A’#######
####
Guest#OS#####
####
Bins/#Libs#####
App#B#######
####
Guest#OS#####
####
Bins/#Libs#####
App#A’#
Docker##
Host#OS#
Server#
####
Bins/Libs#
####
App#A#
####
Bins/Libs#
####
App#B#
App#B’#
App#B’#
App#B’#VM#
Container#
Containers#are#isolated,#but#share#OS#and,#where#appropriate,#bins/libraries##
###
Guest#OS#####
####
Guest#OS#####
…result#is#significantly#faster#deployment,##much#less#overhead,#easier#migraLon,#faster#restart#
Docker主な機能
・コンピューターリソースの隔離および制限 ・他のHost、他のContainerとのNetworkの構成 ・ファイル/ディレクトリの世代と差分の管理 ・再現可能な手順 !Docker入門:第2章「Dockerの特徴」より
for realizing container• User Namespace 名前空間
• プロセスをグループ化して隔離
• 独立したuid/gid,Networkを作る
• cgroup リソース制限
• CPU,Memory,Disk,帯域を独立して使用
• AUFS イメージを差分管理
• UnionFSの差分管理より、レイヤの積み重ねでイメージとして構築
• 構築済みのレイヤはキャッシュとして利用されるので、何度でも高速にオペレーション可能
Benefits of Container• 起動しているOSは一つ
• 仮想マシンを起動しているわけではなく、HostOSから見るとプロセスを立ち上げているだけなので起動が早い
• ハードウェアの仮想化が不要
• 各仮想マシンのようにSystemを動かす必要が無いため、Containerの中で極論httpdのみ動かしているといったことができる
Disadvantages of Container• kernelの操作を扱うことが出来ない
• 異なるOSを動かすことが出来ない
• kernel 3.8以上
• ユーザ名前空間UID,GIDの実装されたのが3.8のため
• http://bit.ly/1nUHMeS
再現可能な手順• Dockerfileを上から順番に実行
• FROMでOSを指定(リポジトリ名:タグ名⇒ubuntu:12.04)
• コマンドにRUNをつけることで簡単に実行
• ADDでContainerにファイルの配置
• EXPOSEで開放するPort指定
• CMDでdocker runする際に実行して欲しいものを記述可能(プロセス起動をsupervisorを使う)
簡単なUse Cases
開発環境の配布 CI(Jenkins+Docker)
開発環境の配布• チームにJoinした人にすぐに提供できる
• 「俺の環境では、再現しない」を撲滅←
CI(Jenkins+Docker)• Infrastructure as codeで秘伝のAMI、スナップショット、サーバーをなくす。
• サーバーのバージョン管理
• DockerとJenkinsとServerspecでミドルウェアのバージョンアップのテストを回すことでバージョンの追従
• Chef/Puppet/AnsibleよりはShellライクで手順書と余り変わらないので入りやすい
• 例: RUN apt-get install hoge
Infrastructure as code• Orchestration
• アプリケーションのデプロイ 例:Capistrano,buildpack
• Configuration
• ミドルウェアレベルの設定 例:Chef, Puppet
• Bootstrapping
• OS のインストールにあたる領域 例:Docker, Vagrant,
Packer
Infrastructure as codecommitにより、設定情報だけではなく、なんのためにcommitしたかを追える
githubでのDockerfile編集時のcommitに対するコメントでハマった部分などの記載 タグにより、アークテクチャーのバージョン管理
Docker Hub Build DetailStatus,Dockerfile,Buildのlogが見れる
※GitHubにWebhookを設定すれば、先ほどのpushを元に自動ビルド
Docker Hub InformationGethub上に上げたREADMEが表示
Build成功後はBuild BundleでS3に保管される
(こんな事も試して見ました)• 自分の開発担当機能について、確認したいときに
Herokuのような環境
• git push docker-app master でDocker起動
• 自分自身のrepositoryをもつ
• そもそもVOLUMEオプションで自身の開発ディレクトリをマウントしてしまえば良い
Shared Folder Mac and Container(0.10)
##https://github.com/boot2docker/boot2docker/pull/284##Download https://dl.dropboxusercontent.com/u/12014139/boot2docker.iso!$ boot2docker stop$ vim $HOME/.boot2docker/profileBOOT2DOCKER_ISO=~/path/to/boot2docker.iso$ VBoxManage sharedfolder add boot2docker-vm -name home -hostpath $HOME$ boot2docker up$ boot2docker ssh "sudo modprobe vboxsf && mkdir -p $HOME && sudo mount -t vboxsf home $HOME"$ docker run -i -t -v ~/Documents/hoge:~/hoge hoge/moge /bin/bash
Reference• Docker introduction
• http://slidesha.re/1hNzIX6
• LinuxContainer introduction
• http://bit.ly/1ivylm5
• Linux 3.8 の User Namespace(1)-(4)
• http://bit.ly/1hNAYK3
• Red hat Linux リソース管理ガイド
• http://red.ht/1folC4g
• docker-pass-example
• https://github.com/naoya/docker-paas-example
Reference• Dockerと継続的インテグレーション
• https://github.com/ydnjp/docker-continuous-integration-workflow
• LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術
• http://gihyo.jp/admin/serial/01/linux_containers
• いまさら聞けないDocker入門
• http://bit.ly/1ivylm5
• [翻訳] Dockerについてよくある勘違い
• http://techracho.bpsinc.jp/hachi8833/2014_06_16/17982
• Docker入門
• http://amzn.to/V0Ds4l
Reference• Dockerを支える技術
• http://www.slideshare.net/enakai/docker-34668707
• Dockerクイックツアー
• http://www.slideshare.net/enakai/docker-34526343
宣伝
JAWS-UG 千葉支部 Vol.4AWS運用縛り
概要• 日時
• 2014-07-26(土)13:00 - 17:00
• 場所
• 松戸市民会館 101会議室
• 常磐線/新京成電鉄「松戸駅」東口より徒歩約7分
AWS運用縛り• クラウド業界でご活躍されている経験豊富な方々から、クラウド時代のシステム運用の在り方をご紹介
• ADSJ プリンシパルソリューションアーキテクトの荒木様より、AWS Summit Tokyo 2014 運用パネル(TE-05)の振り返りを行っていただく予定
セッション• 「クラメソ保守運用担当からみたAWS使っててよかったこと」
• クラスメソッド株式会社 植木 和樹さん
• 「ドキュメントを書こう! 運用自動化時代のドキュメンテーション」
• 運用設計ラボ合同会社 波田野 裕一さん
• 「AWSを含めたハイブリッド環境の監視の実現 ~Zabbixのクラウド対応モジュールHyClops~」
• TIS 株式会社 池田 大輔さん
• 調整中
LT• 「LEGOマインドストームでシステム監視」
• 株式会社Syun 高松 基広さん
• 「ご注文は自動化ですか?(仮)」
• クリエーションライン株式会社 前佛 さん
• 「AWSサミット東京1日目のパネル<<クラウド時代の運用>>振り返り」
• アマゾン データ サービス ジャパン株式会社 荒木 さん
• 調整中
http://jawsug-chiba.doorkeeper.jp/events/12561 本編
http://jawsug-chiba.doorkeeper.jp/events/12563 懇親会