40
Vagrant+Docker HandsOn @Tech-Circle #2

Tech circle#2 Vagrant+Docker handson

Embed Size (px)

Citation preview

Vagrant+DockerHandsOn@Tech-Circle #2

自己紹介

池田 大輔

TIS株式会社 戦略技術センター

@ike_dai https://www.facebook.com/ikedai Zabbix,AWS,fluentd,Chef,JobScheduler...

名前

所属

Twitter

Facebook

興味

ThinkIT連載「自動化時代のインフラ環境稼働テスト「 Serverspec」入門」

(http://thinkit.co.jp/book/2014/08/01/5149)技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1Amazon : http://www.amazon.co.jp/dp/4774162884

Tech-Circle?

Tech-Circleとは?

自分が人におすすめしたい技術をシェアし、これまで知らなかった技術に触れる機会を提供する技

術勉強会です。

インフラエンジニア向けの技術を主軸として取り上げ、中でもOSS(オープンソースソフトウェア)に触れる機会として有用な勉強会を目指します。

「勉強してみる」、「使ってみる」、「提案してみる」などなど技術に何らか触れる"きっかけ"を作れる場にしたいという思いから

この勉強会では講義形式だけではなく、極力参加者自身も勉強会の時間内で

OSSを触って楽しめるようハンズオンの要素を盛り込んでいきたいと考えています。

この勉強会をきっかけとして「OSSを使いこなせるインフラエンジニアになろう!」を目標に活動した

いと思います。

開催日時

2ヶ月に1回 平日19:00-21:00ぐらいで開催予定

(場合によっては変更になる可能性があり)

勉強会の対象者

• 「最近、このツールの名前よく聞くけどどうなんだろう?」

• 「ツールを使ってみたいけどなかなか試す時間が取れないなー」

• 「話聞くだけじゃわからないから触ってみたい、でも、最初にどこから手をつけていいかわからない」

こんな悩みを抱えている人向けです。

ということで、コアな内容というよりはやや入門者向けな内容かと思います。

同じ分野に興味ある人と話したいといった方も大歓迎です。

Tech-Circle

今後の勉強テーマ案• クラウドOSを触ってみる

• OpenStackのインストール・設定を通して知ってみる

• 冗長構成技術を体験してみよう

• Heartbeat + Pacemakerで冗長構成を組んでみる

• データの分散配置技術を試してみよう

• 分散ストレージGlusterFS、Ceph、Riak

• RDBMSの違いを体験してみよう

• MySQLorMariaDB、PostgreSQL

• サーバ構成管理技術を体験してみよう

• Chef、Puppet、Ansible

• ジョブ管理技術を体験してみよう

• JobScheduler、JobArranger、Hinemos

• クラウドAPIを使った制御を体験してみよう

• AWS APIとかOpenStack APIなど

• 運用監視技術を体験してみよう

• Zabbix、Nagios、Hinemos

• ログ管理技術を体験してみよう

• fluentd、rsyslog

• オーケストレーションツールを体験してみよう

• Serf、Consul、CloudConductor

• バックアップツールを体験してみよう

• Bacula、Amanda

• ログの分析基盤を作ってみよう

• Elasticsearch, Kibana, LogAnalyzer, request-log-analyzer

• 検索エンジンを作ってみよう

• Apache Solr, Groonga

• サーバプロセスを作ってみよう

• ServerEngine

その他テーマ募集中!

本日の勉強会の予定

18:30-19:30 受付&ネットワーキングタイム

19:30-19:35 Tech-Circleの概要説明  ←イマココ

19:35-19:50 Vagrant + Docker概要解説

19:50-20:10 セッション1: Vagrantでローカル(VirtualBox)に仮想マシン構築

20:10-20:30 セッション2: Vagrantで複数Dockerコンテナを一括構築

20:30-20:45 休憩 & 質問タイム

20:45-20:50 LT「???」 TIS 坂部 (@koudaiii)

20:50-20:55 LT「???」 TIS 冨永 (@tominaga443)

20:55-21:00 LT「Vagrantでクラウド上にDocker環境を作る」IDCフロンティア 佐々木惇氏

21:00-21:30 QA & アンケート回答 & 片付け

LT飛び込み歓迎です!

会場についての連絡事項

電源

• 数に限りがありますので、譲り合ってご使用下さい

ネットワーク(WiFi)• WiFi提供していますが共用回線となるためご注意下さい

トイレ

• 社員証が無いと扉が開かないので、お近くのスタッフ( TIS社員)にお声がけください

本日のハッシュタグ

#techcircle

質問&感想は随時こちらまで

アンケートへのご協力願い

次回以降のテーマ決めや、今後の運営の参考のため

アンケートにご協力お願いします

http://goo.gl/qRSDGk

本編開始

何故Vagrant + Docker?

環境をさくっと簡単に用意できる

= ハンズオンの環境として便利

Vagrant?

つまり

環境構築・設定を一定のフローにより何度でも自動的に再現できるようにする

・Vagrantfile- Vagrantで自動処理する定義ファイル

・Boxes- Vagrantで起動するマシンのベースイメージ

・Providers- マシンを様々な環境に展開可能にするコンポーネント

・Provisioners- 展開したマシン内での処理を自動化するコンポーネント

Vagrant構成要素

・Rubyによる内部DSL形式で構築する環境情報を定義

Vagrantfile

・マシンのひな型となるファイル群 http://www.vagrantbox.es/で様々公開

Boxes

$ ll ~/.vagrant.d/boxes/ubuntu/0/virtualbox/total 744176drwxr-xr-x 6 ike_dai staff 204 1 8 19:13 .drwxr-xr-x 3 ike_dai staff 102 1 8 19:13 ..-rw-r--r-- 1 ike_dai staff 505 1 8 19:13 Vagrantfile-rw------- 1 ike_dai staff 380995584 1 8 19:13 box-disk1.vmdk-rw------- 1 ike_dai staff 10515 1 8 19:13 box.ovf-rw-r--r-- 1 ike_dai staff 25 1 8 19:13 metadata.json

・様々な環境に展開可能にするコンポーネント

Providers

Vagrant

VirtualBoxprovider

VMwareprovider※1

Hyper-Vprovider

AWSprovider※2

※1: VMware providerはOSSではなく商用プラグインとして販売※2: AWS providerはvagrant-awsプラグイン導入により利用可

VirtualBox

VMware

DockerDockerprovider

Hyper-V

AWS

VBoxManage

vSphere API

docker command

Hyper-V command

(PowerShell)

AWS API

・展開したマシン内での処理を自動化するコンポーネント

Provisioners

引用: https://docs.vagrantup.com/v2/provisioning/shell.html

shellだけじゃなく、Ansible,Chef,Puppet,Salt,CFEngine等を使ってのプロビジョニングも可能

Docker?

つまり

コンテナ管理ソフトウェアの1つアプリケーションをよりすばやく迅速に稼動させるためのプラットフォーム

用途

開発アプリケーションをさくっと動作確認したりChefやAnsibleなど構成管理ツールの挙動をサクッと確認したり

OS(Linux)

コンテナ管理ソフトウェア(Docker)

コンテナ コンテナ コンテナ

MW

APP

MW

APP

MW

APP

イメージイメージ

イメージイメージ

OSから見るとコンテナはプロセスの 1つ

・Dockerfile- Dockerでコンテナを自動構成する定義ファイル

・Docker images- Dockerコンテナのベースとなるイメージ

・Union Filesystems- コンテナ管理を行うレイヤーベースのファイルシステム

・Namespaces- ユーザプロセス空間の分離して扱えるようにする機能

・Cgroups- プロセスに割り当てるリソース資源をコントロールする機能

Docker構成要素

・コンテナをbuildする際の中で実行する手順を記載した定義ファイル

Dockerfile

・コンテナを作る際のベースとなるイメージ・Docker Hubで多数公開

Docker image

Union File System

引用: https://docs.docker.com/terms/layer/

・Layerベースで管理可能なファイルシステム

ハンズオン

http://qiita.com/ike_dai/items/fb4d7616a14c51a99592

ハンズオンの環境 ~全体イメージ~

各自のPC

HV(VirtualBox)

vagrant-ubuntu/  Vagrantfile

vagrant-docker/ Vagrantfile Dockerfile

VM(Ubuntu 14.04)Docker

Container(dev1) Container(dev2)

仮想ブリッジ(docker0)

ハンズオンの環境 ~セッション1~

各自のPC

HV(VirtualBox)

vagrant-ubuntu/  Vagrantfile

VM(Ubuntu 14.04)

ハンズオンの環境 ~セッション2~

各自のPC

HV(VirtualBox)

vagrant-docker/ Vagrantfile Dockerfile

VM(Ubuntu 14.04)Docker

Container(dev1) Container(dev2)

仮想ブリッジ(docker0)

手作業でインストール

ハンズオンの追加課題

セッション2の手作業でインストール・設定したDockerをVagrantfileのShell ScriptのProvisionerにより自動構築

$ sudo apt-get update$ sudo apt-get install docker.io$ sudo docker pull ubuntu:14:04$ sudo usermod -G docker vagrant

本日の勉強会の予定

18:30-19:30 受付&ネットワーキングタイム

19:30-19:35 Tech-Circleの概要説明

19:35-19:50 Vagrant + Docker概要解説

19:50-20:10 セッション1: Vagrantでローカル(VirtualBox)に仮想マシン構築

20:10-20:30 セッション2: Vagrantで複数Dockerコンテナを一括構築

20:30-20:45 休憩 & 質問タイム   ←イマココ

20:45-20:50 LT「???」 TIS 坂部 (@koudaiii)

20:50-20:55 LT「???」 TIS 冨永 (@tominaga443)

20:55-21:00 LT「Vagrantでクラウド上にDocker環境を作る」IDCフロンティア 佐々木惇氏

21:00-21:30 QA & アンケート回答 & 片付け

LT飛び込み歓迎です!

【再掲】最後に

次回以降のテーマ決めや、今後の運営の参考のため

アンケートにご協力お願いします

http://goo.gl/qRSDGk