31
Docker JTF2014@koudaiii 2014.06.22

Docker_jtf2014

  • Upload
    -

  • View
    1.364

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Docker_jtf2014

Docker ~JTF2014~

@koudaiii 2014.06.22

Page 2: Docker_jtf2014

About me

Page 3: Docker_jtf2014

Sakabe kodai

• @koudaiii

• github.com/koudaiii

• qiita.com/koudaiii

• koudaiii.hatenablog.com

• Community

• TISMatsuri

• Jaws-ug 千葉

• Devlove甲子園

Page 4: Docker_jtf2014

an open source project to pack, ship and run any application as a lightweight container

www.docker.io

Page 5: Docker_jtf2014

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…!

Page 6: Docker_jtf2014

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

隔離空間

プロセス

プロセス

隔離空間

プロセス

プロセス

プロセス

プロセス

物理マシン

Page 7: Docker_jtf2014

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#

Page 8: Docker_jtf2014

Docker主な機能

・コンピューターリソースの隔離および制限 ・他のHost、他のContainerとのNetworkの構成 ・ファイル/ディレクトリの世代と差分の管理 ・再現可能な手順 !Docker入門:第2章「Dockerの特徴」より

Page 9: Docker_jtf2014

for realizing container• User Namespace 名前空間

• プロセスをグループ化して隔離

• 独立したuid/gid,Networkを作る

• cgroup リソース制限

• CPU,Memory,Disk,帯域を独立して使用

• AUFS イメージを差分管理

• UnionFSの差分管理より、レイヤの積み重ねでイメージとして構築

• 構築済みのレイヤはキャッシュとして利用されるので、何度でも高速にオペレーション可能

Page 10: Docker_jtf2014

Benefits of Container• 起動しているOSは一つ

• 仮想マシンを起動しているわけではなく、HostOSから見るとプロセスを立ち上げているだけなので起動が早い

• ハードウェアの仮想化が不要

• 各仮想マシンのようにSystemを動かす必要が無いため、Containerの中で極論httpdのみ動かしているといったことができる

Page 11: Docker_jtf2014

Disadvantages of Container• kernelの操作を扱うことが出来ない

• 異なるOSを動かすことが出来ない

• kernel 3.8以上

• ユーザ名前空間UID,GIDの実装されたのが3.8のため

• http://bit.ly/1nUHMeS

Page 12: Docker_jtf2014

再現可能な手順• Dockerfileを上から順番に実行

• FROMでOSを指定(リポジトリ名:タグ名⇒ubuntu:12.04)

• コマンドにRUNをつけることで簡単に実行

• ADDでContainerにファイルの配置

• EXPOSEで開放するPort指定

• CMDでdocker runする際に実行して欲しいものを記述可能(プロセス起動をsupervisorを使う)

Page 13: Docker_jtf2014

簡単なUse Cases

開発環境の配布 CI(Jenkins+Docker)

Page 14: Docker_jtf2014

開発環境の配布• チームにJoinした人にすぐに提供できる

• 「俺の環境では、再現しない」を撲滅←

Page 15: Docker_jtf2014

CI(Jenkins+Docker)• Infrastructure as codeで秘伝のAMI、スナップショット、サーバーをなくす。

• サーバーのバージョン管理

• DockerとJenkinsとServerspecでミドルウェアのバージョンアップのテストを回すことでバージョンの追従

• Chef/Puppet/AnsibleよりはShellライクで手順書と余り変わらないので入りやすい

• 例: RUN apt-get install hoge

Page 16: Docker_jtf2014

Infrastructure as code• Orchestration

• アプリケーションのデプロイ 例:Capistrano,buildpack

• Configuration

• ミドルウェアレベルの設定 例:Chef, Puppet

• Bootstrapping

• OS のインストールにあたる領域 例:Docker, Vagrant,

Packer

Page 17: Docker_jtf2014

Infrastructure as codecommitにより、設定情報だけではなく、なんのためにcommitしたかを追える

githubでのDockerfile編集時のcommitに対するコメントでハマった部分などの記載 タグにより、アークテクチャーのバージョン管理

Page 18: Docker_jtf2014

Docker Hub Build DetailStatus,Dockerfile,Buildのlogが見れる

※GitHubにWebhookを設定すれば、先ほどのpushを元に自動ビルド

Page 19: Docker_jtf2014

Docker Hub InformationGethub上に上げたREADMEが表示

Build成功後はBuild BundleでS3に保管される

Page 20: Docker_jtf2014

(こんな事も試して見ました)• 自分の開発担当機能について、確認したいときに

Herokuのような環境

• git push docker-app master でDocker起動

• 自分自身のrepositoryをもつ

• そもそもVOLUMEオプションで自身の開発ディレクトリをマウントしてしまえば良い

Page 21: Docker_jtf2014

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

Page 22: Docker_jtf2014

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

Page 23: Docker_jtf2014

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

Page 24: Docker_jtf2014

Reference• Dockerを支える技術

• http://www.slideshare.net/enakai/docker-34668707

• Dockerクイックツアー

• http://www.slideshare.net/enakai/docker-34526343

Page 25: Docker_jtf2014

宣伝

Page 26: Docker_jtf2014

JAWS-UG 千葉支部 Vol.4AWS運用縛り

Page 27: Docker_jtf2014

概要• 日時

• 2014-07-26(土)13:00 - 17:00

• 場所

• 松戸市民会館 101会議室

• 常磐線/新京成電鉄「松戸駅」東口より徒歩約7分

Page 28: Docker_jtf2014

AWS運用縛り• クラウド業界でご活躍されている経験豊富な方々から、クラウド時代のシステム運用の在り方をご紹介

• ADSJ プリンシパルソリューションアーキテクトの荒木様より、AWS Summit Tokyo 2014 運用パネル(TE-05)の振り返りを行っていただく予定

Page 29: Docker_jtf2014

セッション• 「クラメソ保守運用担当からみたAWS使っててよかったこと」

• クラスメソッド株式会社 植木 和樹さん

• 「ドキュメントを書こう! 運用自動化時代のドキュメンテーション」

• 運用設計ラボ合同会社 波田野 裕一さん

• 「AWSを含めたハイブリッド環境の監視の実現 ~Zabbixのクラウド対応モジュールHyClops~」

• TIS 株式会社 池田 大輔さん

• 調整中

Page 30: Docker_jtf2014

LT• 「LEGOマインドストームでシステム監視」

• 株式会社Syun 高松 基広さん

• 「ご注文は自動化ですか?(仮)」

• クリエーションライン株式会社 前佛 さん

• 「AWSサミット東京1日目のパネル<<クラウド時代の運用>>振り返り」

• アマゾン データ サービス ジャパン株式会社 荒木 さん

• 調整中

Page 31: Docker_jtf2014

http://jawsug-chiba.doorkeeper.jp/events/12561 本編

http://jawsug-chiba.doorkeeper.jp/events/12563 懇親会