狠狠撸

狠狠撸Share a Scribd company logo
Dockerで
らくらく開発?運?用を
体感しよう
第6回 ?よこはまクラウド勉強会
March ?21, ?2015
@makinog3
今?日の?目的
ハンズオンでDockerを経験しつつ、
コンテナ技術の基礎と
開発?運?用にどう利利?用できるのかを学ぶ
コンテナって?
?? ハードウェア仮想化のひとつ
?? VMwareとかの仮想化と何が違うの?
従来の仮想化技術
(ハイパーバイザー)
ホストOS	
 
ハイパーバイザー
VMwareなど	
 
ハードウェアの    
エミュレーション  
↓  
オーバーヘッド大
コンテナ
ホストOS	
 
コンテナエンジン
Dockerなど	
 
ホストOOSS(カーネル)
の上で直接アプリケー
ション(ユーザプロセ
ス)が実行される  
↓  
オーバーヘッド小
例例えるなら…
VVSS  
ラーメン博物館   一兰
コンテナ型仮想化の特徴
?? 単?一のOS(例例えばLinux)のみ稼働
?? 速い
?? インフラ(ミドルウェアなどの開発環境、運?用環
境)を共通化できる
今日の	
 
ポイント
Dockerの実装
(利利?用している技術)
?? Linux ?Namespaces
コンピューターリソースの隔離離
?? Linux ?cgroups
コンピューターリソースの制限
?? AUFS/Device ?Mapper ?Thin ?Provisioning
ファイル/ディレクトリの差分管理理
?? Linux ?iptables
他のホスト、他のコンテナーとのネットワークの構成
Dockerの世界
Dockerエンジン	
 
Dockerイメージ	
 
ディレクトリ/
ファイルの
アーカイブ
とにかく触ってみる
?? Amazon ?EC2のインスタンス起動
?? Dockerをインストール
?? Docker ?Hub ?Registryからベースのイメージをダ
ウンロード
?? イメージを加?工して実?行行
Dockerインストール
?? Amazon ?LinuxでEC2インスタンス作成
?? sshログイン
?? Amazon ?Linuxの初期ユーザは ?”ec2-‐??user”
?? Dockerエンジンのインストール
$ ?sudo ?yum ?install ?–y ?docker
Dockerのコマンド(1)
コマンド	
  概要	
 
pull REPOSITORY	
  Docker Hub Registryからイメージを取り込む	
 
images	
  手元にあるイメージの一覧	
 
ps	
  コンテナの一覧	
 
run IMAGE	
  イメージからコンテナを起動	
 
start CONTAINER	
  コンテナを起動	
 
stop CONTAINER	
  コンテナを停止
top CONTAINER 	
  コンテナで実行中のプロセスの一覧
コンテナを起動する
?? イメージを取り込む
$ ?sudo ?docker ?pull ?learn/tutorial
?? コンテナ内でコマンドを実?行行する
$ ?sudo ?docker ?run ?learn/tutorial ?echo ??’Hello, ?Docker!?’
?? コンテナ内でシェルを実?行行する(ログインしてみる)
$ ?sudo ?docker ?run ?–it ?learn/tutorial /bin/bash
コンテナをちょっと加?工
?? pingをインストール
$ ?sudo ?docker ?run ?learn/tutorial ?apt-‐??get ?install ?–y ?ping
?? コンテナを確認
$ ?sudo ?docker ?ps ?–a
?? イメージの作成
$ ?sudo ?docker ?commit ?CONTAINER ?makinog3/ping
?? 新しいイメージでコンテナを起動
$ ?sudo ?docker ?run ?makinog3/ping ?ping ?www.google.com
Dockerのコマンド(2)
コマンド	
  概要	
 
commit CONTAINER
REPOSITORY	
 
コンテナからイメージを作成	
 
save IMAGE > TARファイ
ル	
 
イメージをファイルに出力する	
 
load < TARファイル	
  ファイルをイメージとして取り込む	
 
export CONTAINER > TAR
ファイル	
 
コンテナをファイルに出力する	
 
import URL REPOSITORY	
  ファイルからイメージを取り込む
コンテナを保存、再利利?用
?? コンテナをファイルに出?力力
$ ?sudo ?docker ?export ?CONTAINER ?> ?/tmp/
docker_?learn_?ping.tar
?? イメージを取り込む
$ ?cat ?/tmp/docker_?learn_?ping.tar ?| ?sudo ?docker ?
import ?– ?learn/ping2
Dockerの使いどころ
?? コンテナでWebサーバを起動する
?? Docker?leによるコンテナ環境のドキュメント化
?? Elastic ?BeansTalk(PaaS)へのデプロイ
コンテナでWebサーバ
?? Nginxをコンテナにインストール
$ ?sudo ?docker ?pull ?ubuntu
$ ?sudo ?docker ?run ?ubuntu ?apt-‐??get ?install ?–y ?nginx
$ ?sudo ?docker ?commit ?CONTAINER ?nginx1
?? Nginxを起動
$ ?sudo ?docker ?run ?-‐??d ?-‐??p ?80:80 ?nginx1 ?/usr/sbin/
nginx ?-‐??g ?'daemon ?o?;' ?
?? AWSのセキュリティグループ修正
?? 80番ポートを公開する
コンテナの80番
ポートをホストの
80番に割り当てる	
 
コンテナはフォア
グランドで動くプ
ロセスがいないと
停止してしまう
Dockerのコマンド(3)
コマンド	
  概要	
 
build -t REPOSITORY
DIRECTORY	
 
Dockerfileからイメージを作成
なぜDocker?le?
?? コンテナ環境構築の?手順をドキュメント化
?? 開発環境などを構築する際、コンテナで?行行なうミド
ルウェアのインストールなどを?手作業でやらない
?? ソースなどと?一緒にGit/Subversionなどのリポジト
リで管理理できる
?? 環境の変更更(ミドルウェアの追加)を差分管理理できる
?? ファイルシステム全体のアーカイブであるイメー
ジファイルよりも?小さい
Docker?leの命令令
命令	
  概要	
 
FROM IMAGE	
  元になるイメージの指定	
 
MAINTAINER MAINTAINER	
  作成者	
 
RUN COMMAND	
  コマンドの実行	
 
ADD FILE DIRECTORY	
  ファイル、ディレクトリの追加	
 
CMD	
  コンテナの実行コマンド	
 
ENTRYPOINT	
  コンテナの実行コマンド	
 
WORKDIR	
  作業ディレクトリの指定	
 
ENV	
  環境変数の指定	
 
USER	
  実行ユーザの指定	
 
EXPOSE	
  ポートの公開(利用するポートの指定)
VOLUME	
  ボリューム(ホストのディレクトリ)のマウント
Docker?leを書く
FROM ?ubuntu
MAINTAINER ?makino ?<makinog3@gmail.com>
RUN ?apt-‐??get ?install ?-‐??y ?nginx
ADD ?index.html ?/usr/share/nginx/html/
CMD ?["/usr/sbin/nginx", ?"-‐??g", ?"daemon ?o?;"]
イメージの作成?起動
?? Docer?le等を書く
$ ?vi ?Docker?le
$ ?vi ?index.html
?? イメージの作成
$ ?sudo ?docker ?build ?-‐??t ?nginx2 ?.
$ ?sudo ?docker ?images
?? コンテナを起動
$ ?sudo ?docker ?run ?-‐??d ?-‐??p ?80:80 ?nginx2 ?/usr/sbin/
nginx
ホストにファイルを出?力力する
?? ホストのディレクトリをコンテナにマウント
$ ?sudo ?mkdir ?/var/log/docker_?nginx2
$ ?sudo ?docker ?run ?-‐??d ?-‐??p ?80:80 ?-‐??v ?/var/log/
docker_?nginx:/var/log/nginx ?nginx2
Elastic ?BeansTalkとは
?? Amazon ?Web ?Serviceが提供するPaaS環境
?? ロードバランサ(ELB)によるオートスケール環境
が簡単に利利?用できる
?? Dockerに対応、Docker?leやイメージをそのままデ
プロイできる
Elastic ?BeansTalkにデプロイ
?? AWSコンソールからElastic ?BeansTalkのインス
タンスを起動
?? Docker?leを指定してデプロイ
まとめ
?? やったこと
?? コンテナ技術、Dockerの基礎
?? Amazon ?EC2でDockerを使った環境構築
?? Elastic ?BeansTalkへのデプロイ
?? やってないこと
?? レジストリへのイメージの登録(push)
?? AWS以外のコンテナサービスの利利?用
?? Google ?Compute ?Engine、Azule
?? Amazon ?EC2 ?Container ?Service
?? ほか、いっぱい

More Related Content

顿辞肠办别谤て?らくらく开発?运用を体感しよう