More Related Content
PDF
PDF
PDF
PDF
【dots. IT勉強会】開発環境のDocker化 PDF
PDF
PDF
PDF
コンテナ事例 CircleCI, Cucumber-Chef What's hot
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪 PDF
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来 PDF
PPTX
開発環境をVagrantからdockerに移行してみた PDF
コンテナ時代だからこそ要注目! Cloud Foundry PDF
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~ PDF
PDF
PDF
普通のRailsアプリをdockerで本番運用する知見 PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~ PDF
PDF
PDF
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014 PPTX
Ansibleを使ってdockerコンテナをプロビジョニングする PDF
はてなにおける継続的デプロイメントの現状と Docker の導入 PDF
PPTX
PDF
Vagrant & Dockerによるイマドキの開発環境構築 PDF
PDF
Kubernetesにまつわるエトセトラ(主に苦労話) Viewers also liked
PDF
PDF
Dockerを使ったローカルでの開発から本番環境へのデプロイまで PDF
PDF
No Monitoring, No Life on AWS PDF
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~ PDF
オンプレミスから AWS への劇的ビフォーアフター PPTX
コンテナ基盤であるLXC/LXDを 本番環境で運用する話 PDF
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション PDF
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」 PDF
CoreOSによるDockerコンテナのクラスタリング PPTX
PDF
PDF
20140726 jaws-ug chiba AWS operation best practice PPTX
PDF
20140717 awssummit2014-cloud-operation Similar to VagrantユーザのためのDocker入門
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方 PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】 PDF
Dockerイメージの理解とコンテナのライフサイクル PPTX
PPTX
PDF
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編 PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PPTX
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR PDF
PDF
PPTX
PDF
PDF
PDF
More from Masashi Shinbara
PDF
PDF
How to learn Laravel5 application from Authentication PDF
PDF
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2 PDF
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築 PDF
Laravel ユーザなら知っておくべきAuthオートログイン PDF
Heroku で作る
スケーラブルな
PHP アプリケーション PDF
Azure Websites で作るスケーラブルな PHP アプリケーション PDF
Vagrant で PHP 開発環境を作る ハンズオン PDF
PDF
PDF
PDF
PDF
認証機能で学ぶ Laravel 5 アプリケーション PDF
PDF
PDF
PHPコードではなく PHPコードの「書き方」を知る PDF
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携 PDF
VagrantユーザのためのDocker入門
- 1.
- 2.
- 3.
- 4.
- 5.
(c) 2014 MasashiShinbara @shin1x1
Dockerの特徴2
レイヤードファイルシステム
ディスク、ネットワーク節約
マジeco !!
- 6.
- 7.
- 8.
- 9.
(c) 2014 MasashiShinbara @shin1x1
Dockerとは
• Docker社(旧dotCloud社)が開発したOSS
• golang で実装
• コンテナ技術を使った軽量な仮想環境
• レイヤによる差分ファイルシステム
• コンテナ(イメージ)配布システム
- 10.
(c) 2014 MasashiShinbara @shin1x1
Docker について
http://www.slideshare.net/dotCloud/docker-intro-
november
- 11.
(c) 2014 MasashiShinbara @shin1x1
コンテナとVM
http://www.slideshare.net/dotCloud/docker-intro-november
- 12.
(c) 2014 MasashiShinbara @shin1x1
Dockerコンテナ
http://www.slideshare.net/dotCloud/docker-intro-november
- 13.
(c) 2014 MasashiShinbara @shin1x1
Dockerシステム概要
http://www.slideshare.net/dotCloud/docker-intro-november
- 14.
(c) 2014 MasashiShinbara @shin1x1
Dockerコンテナの更新
http://www.slideshare.net/dotCloud/docker-intro-november
- 15.
(c) 2014 MasashiShinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
- 16.
(c) 2014 MasashiShinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
- 17.
(c) 2014 MasashiShinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
- 18.
(c) 2014 MasashiShinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
- 19.
- 20.
(c) 2014 MasashiShinbara @shin1x1
OSXで試す
• OSX では、Docker コマンドだけ使えるが、
Dockerコンテナは動かない
• VM 等で、Linux 環境を用意する
• Linux 環境として、boot2docker が手軽
• 今回は、Vagrant で CentOS 環境を使う
- 21.
(c) 2014 MasashiShinbara @shin1x1
なぜ boot2docker 使わない?
• Vagrant なら、IP の割り当てが楽
• Vagrant なら、synced_folder が便利
• VM の起動は時間がかかるが、あとは一緒
- 22.
(c) 2014 MasashiShinbara @shin1x1
インストール(OSX)
!
$ brew install docker!
• Homebrew で docker インストール
- 23.
(c) 2014 MasashiShinbara @shin1x1
Linux環境を用意(OSX)
!
$ git clone https://github.com/shin1x1/vagrant-
centos-docker.git!
$ cd vagrant-centos-docker!
$ vagrant up!
• Vagrant で Docker デーモン(CentOS)を起動
- 24.
(c) 2014 MasashiShinbara @shin1x1
CentOSでのDocker
$ sudo sed -i 's,^other_args="",other_args="-H
tcp://0.0.0.0:4243 -H unix:// -dns
8.8.8.8",g' /etc/sysconfig/docker
• unixドメインソケットでのみ通信可能なので、
TCP/IP で待ち受けるように変更
• /etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:4243 -H unix:// -dns 8.8.8.8"
- 25.
(c) 2014 MasashiShinbara @shin1x1
Dockerホスト設定(OSX)
!
$ docker -H tcp://localhost:4243 info!
• Docker コマンドに -H オプションで指定
!
$ export DOCKER_HOST=tcp://localhost:4243!
$ docker info!
• 環境変数で設定しておくと楽
- 26.
(c) 2014 MasashiShinbara @shin1x1
ベースイメージ取得
$ docker search centos
• イメージを探す
$ docker pull centos
• イメージのダウンロード
$ docker images!
REPOSITORY TAG IMAGE ID CREATED VIRTUAL
SIZE!
centos 6.4 539c0211cd76 12 months ago 300.6 MB!
centos latest 539c0211cd76 12 months ago 300.6 MB
• キャッシュしているイメージを表示
- 27.
(c) 2014 MasashiShinbara @shin1x1
コンテナを起動
$ docker run centos cat /etc/redhat-release!
CentOS release 6.4 (Final)
• コンテナを起動して、cat を実行
$ docker run -i -t centos /bin/bash !
bash-4.1#
• コンテナを起動して、Bash を実行
- 28.
(c) 2014 MasashiShinbara @shin1x1
実行コンテナを確認
$ docker ps!
CONTAINER ID IMAGE COMMAND CREATED !
fa7c9e516c61 centos:6.4 /bin/bash 6 minutes ago
• 実行中コンテナを表示
$ docker ps -a!
CONTAINER ID IMAGE COMMAND CREATED STATUS!
8a021062464e centos:6.4 /bin/bash 7 seconds ago Up 6 seconds!
5dd90f9483d3 centos:6.4 cat /etc/redhat-rele 29 seconds ago Exit 0
• 全て(停止コンテナ含めて)表示
- 29.
(c) 2014 MasashiShinbara @shin1x1
コンテナをイメージ化
$ docker commit CONTAINER_ID IMAGE_NAME!
xxxxxxxxxxxxxxxxxxxxx!
!
$ docker images!
!
$ docker run IMAGE_NAME php -v!
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)!
Copyright (c) 1997-2010 The PHP Group!
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
• コンテナをイメージ化
- 30.
(c) 2014 MasashiShinbara @shin1x1
コンテナ構築を自動化
$ vim Dockerfile!
FROM centos!
MAINTAINER shin1x1 <shin1x1@gmail.com>!
!
#!
# httpd!
RUN yum -y install httpd!
!
#!
# PHP!
RUN yum -y install php!
!
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]!
• Dockerfile に構築手順を書く
- 31.
(c) 2014 MasashiShinbara @shin1x1
コンテナ構築を自動化
$ docker build -t shin1x1/httpd_php .!
Uploading context 150 kB!
Uploading context!
Step 0 : FROM centos!
---> 539c0211cd76!
Step 1 : MAINTAINER shin1x1 <shin1x1@gmail.com>!
---> Using cache!
---> b84d1c89ba69!
Step 2 : RUN yum -y install httpd!
---> Using cache!
---> 7abc65b054a8!
Step 3 : RUN yum -y install php!
---> Using cache!
---> 792d88165f34!
Step 4 : CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]!
---> Using cache!
---> 04626460b476!
Successfully built 04626460b476
• イメージをビルド
- 32.
(c) 2014 MasashiShinbara @shin1x1
コンテナ構築を自動化
$ docker run shin1x1/httpd_php php -v!
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)!
Copyright (c) 1997-2010 The PHP Group!
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies!
• 構築したイメージをコンテナとして起動
- 33.
(c) 2014 MasashiShinbara @shin1x1
コンテナをサービス化
$ docker run -d -p 80:80 shin1x1/httpd_php!
xxxxxxxxxxxxxxxxxxxxxxxx!
• -d = コンテナをバックグラウンドで動かす
• -p = ポートマッピング(ホスト:コンテナ)
• -v = ホストディレクトリをコンテナからマウント
• コンテナのプロセスはフォアグラウンドで動かす
• http://192.168.33.10/ でアクセス可能
- 34.
- 35.
(c) 2014 MasashiShinbara @shin1x1
速くなったVagrant?
• いいえ、違います。
• ユースケースは似てるとこもありますが、
異なるものと思ったほうが良いです。
- 36.
(c) 2014 MasashiShinbara @shin1x1
似てるところ
• 独立した仮想環境が容易に作れる
• ベースイメージを利用
• 構築手順(Dockerfile, Vagrantfile)を
書いて、自動構築
• どの環境でも同じ環境が作れる
- 37.
(c) 2014 MasashiShinbara @shin1x1
違うところ
• 動作方式(ハイパーバイザー型とコンテナ型)
• 起動速度
• ファイルシステム
(フルバックアップと差分バックアップ)
• ポータビリティ
• 想定しているユースケース
- 38.
- 39.
(c) 2014 MasashiShinbara @shin1x1
検証環境に使う
• ミドルウェアのインストールや設定の検証など
• 手軽に作って、壊してができるので良い
• 検証用のベース image を用意しておく
• image のキャッシュを生かすため
同じ VM 上で Docker デーモンを動かす
- 40.
(c) 2014 MasashiShinbara @shin1x1
開発環境に使う
• OSX の IDEで書いて、コードの実行はVM
=> Vagrant の synced_folder を利用
• プロジェクト毎に独立した環境にしたい
=> Vagrant の方がより独立した環境に
• 全く同じ環境にしたい
=> アクセス IP も固定した方が吉
• OSXでは、どのみちVMが必要
• Vagrant 内でプロビジョナで Docker 使うならアリ
- 41.
(c) 2014 MasashiShinbara @shin1x1
CI環境に使う
• Jenkinsでオールテスト実行環境として利用
• ビルドの度にコンテナを生成して、テスト実行
• ビルド毎に独立した環境
• 軽量な動作で複数実行されても問題無い
• いま、一番導入しやすいところ
• Vagrant だとオーバーヘッドが大きい
- 42.
(c) 2014 MasashiShinbara @shin1x1
CI運用例
Mac
private repo
(1) git push
CI サーバ(さくらVPS)
(2) hook
(3) git pull
(4) docker build & docker run
- 43.
(c) 2014 MasashiShinbara @shin1x1
CI運用例
• Jenkinsプロジェクト設定(シェルの実行)
sudo docker build -t ${JOB_NAME} .!
sudo docker run -v ${WORKSPACE}/src:/share ${JOB_NAME}
- 44.
(c) 2014 MasashiShinbara @shin1x1
本番環境に使う
• Docker の主戦場
• PaaS / DaaS (Docker as a Service)
• サーバでコンテナビルド?
• ビルドしたコンテナをpush?
• まだ模索中…
- 45.
- 46.
(c) 2014 MasashiShinbara @shin1x1
まとめ
• 軽量でポータブルなコンテナ
• OSXで使うなら、VM が必要
• Docker ≠ better Vagrant
- 47.
- 48.