SlideShare 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サーバを起動する
•  Dockerfileによるコンテナ環境のドキュメント化
•  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  off;'  
•  AWSのセキュリティグループ修正
•  80番ポートを公開する
コンテナの80番
ポートをホストの
80番に割り当てる	
 
コンテナはフォア
グランドで動くプ
ロセスがいないと
停止してしまう
Dockerのコマンド(3)
コマンド	
  概要	
 
build -t REPOSITORY
DIRECTORY	
 
Dockerfileからイメージを作成
なぜDockerfile?
•  コンテナ環境構築の⼿手順をドキュメント化
•  開発環境などを構築する際、コンテナで⾏行行なうミド
ルウェアのインストールなどを⼿手作業でやらない
•  ソースなどと⼀一緒にGit/Subversionなどのリポジト
リで管理理できる
•  環境の変更更(ミドルウェアの追加)を差分管理理できる
•  ファイルシステム全体のアーカイブであるイメー
ジファイルよりも⼩小さい
Dockerfileの命令令
命令	
  概要	
 
FROM IMAGE	
  元になるイメージの指定	
 
MAINTAINER MAINTAINER	
  作成者	
 
RUN COMMAND	
  コマンドの実行	
 
ADD FILE DIRECTORY	
  ファイル、ディレクトリの追加	
 
CMD	
  コンテナの実行コマンド	
 
ENTRYPOINT	
  コンテナの実行コマンド	
 
WORKDIR	
  作業ディレクトリの指定	
 
ENV	
  環境変数の指定	
 
USER	
  実行ユーザの指定	
 
EXPOSE	
  ポートの公開(利用するポートの指定)
VOLUME	
  ボリューム(ホストのディレクトリ)のマウント
Dockerfileを書く
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  off;"]
イメージの作成・起動
•  Docerfile等を書く
$  vi  Dockerfile
$  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に対応、Dockerfileやイメージをそのままデ
プロイできる
Elastic  BeansTalkにデプロイ
•  AWSコンソールからElastic  BeansTalkのインス
タンスを起動
•  Dockerfileを指定してデプロイ
まとめ
•  やったこと
•  コンテナ技術、Dockerの基礎
•  Amazon  EC2でDockerを使った環境構築
•  Elastic  BeansTalkへのデプロイ
•  やってないこと
•  レジストリへのイメージの登録(push)
•  AWS以外のコンテナサービスの利利⽤用
•  Google  Compute  Engine、Azule
•  Amazon  EC2  Container  Service
•  ほか、いっぱい

More Related Content

PDF
ECS-CLI in Action
PDF
小さく始める Docker container の deploy
PDF
GKEで半年運用してみた
PDF
Using LXC on Production
PDF
Kubernetesを触ってみた
PDF
Docker Swarm入門
PDF
Dockerでデプロイ
PPTX
Docker & Kubernetes基礎
ECS-CLI in Action
小さく始める Docker container の deploy
GKEで半年運用してみた
Using LXC on Production
Kubernetesを触ってみた
Docker Swarm入門
Dockerでデプロイ
Docker & Kubernetes基礎

What's hot (20)

PDF
Dockerを社内で使うために
PDF
普通のRailsアプリをdockerで本番運用する知見
PDF
Dockerの利用事例
PDF
Kubernetesにまつわるエトセトラ(主に苦労話)
PDF
【dots. IT勉強会】開発環境のDocker化
PDF
ECS for Docker Meetup #4
PDF
DockerからKubernetesへのシフト
PDF
VagrantユーザのためのDocker入門
PPTX
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
PDF
Docker, Kubernetes and OpenShift v3
PDF
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
PDF
コンテナ時代だからこそ要注目! Cloud Foundry
PPTX
Jenkinsとamazon ecsで コンテナCI
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
PDF
Re: 運用に自動化を求めるのは間違っているだろうか
PDF
Windowsコンテナ入門
PDF
Introduce that Best practices for writing Dockerfiles
PPTX
Appsody でnodejsのアプリを立ち上げよう!
Dockerを社内で使うために
普通のRailsアプリをdockerで本番運用する知見
Dockerの利用事例
Kubernetesにまつわるエトセトラ(主に苦労話)
【dots. IT勉強会】開発環境のDocker化
ECS for Docker Meetup #4
DockerからKubernetesへのシフト
VagrantユーザのためのDocker入門
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Docker, Kubernetes and OpenShift v3
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
コンテナ時代だからこそ要注目! Cloud Foundry
Jenkinsとamazon ecsで コンテナCI
はてなにおける継続的デプロイメントの現状と Docker の導入
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
Re: 運用に自動化を求めるのは間違っているだろうか
Windowsコンテナ入門
Introduce that Best practices for writing Dockerfiles
Appsody でnodejsのアプリを立ち上げよう!
Ad

Viewers also liked (14)

PPTX
ITエンジニアのしあわせ考
PDF
SIerにおくる、アジャイルプロセスの実践
PDF
ソフトウェア開発の見える化
PDF
ソフトウェアレビュー品質向上の7つのポイント ver.3
PDF
LMS on the Cloud
PDF
心はソフトウェアエンジニア、仕事は経営者のすゝめ
PDF
現場の見える化で、チーム力を向上させる
PDF
JJUG CCC 2014 Fall LT
PDF
HTTPとサーブレット
PDF
GASろう
PPTX
メトリクスによる「見える化」のススメ:No 見える化、No 改善
PPTX
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
PDF
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
PDF
Seasar conference 2015 sa-compojure
ITエンジニアのしあわせ考
SIerにおくる、アジャイルプロセスの実践
ソフトウェア開発の見える化
ソフトウェアレビュー品質向上の7つのポイント ver.3
LMS on the Cloud
心はソフトウェアエンジニア、仕事は経営者のすゝめ
現場の見える化で、チーム力を向上させる
JJUG CCC 2014 Fall LT
HTTPとサーブレット
GASろう
メトリクスによる「見える化」のススメ:No 見える化、No 改善
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
AWS LambdaとAPI Gatewayでサーバレスなシステム構築に踏み出してみる
Seasar conference 2015 sa-compojure
Ad

Similar to Dockerでらくらく開発・運用を体感しよう (20)

PDF
ゆるふわなDockerの使い方
PPTX
Docker超入門
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PDF
Docker handson
PDF
Docker入門 - 基礎編 いまから始めるDocker管理
PDF
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
PPTX
Docker v14
PDF
DockerとDocker Hubの操作と概念
PDF
Dockerイメージ構築 実践テクニック
PDF
Docker事始めと最新動向 2015年6月
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PPTX
コンテナの基本 ~Docker実践~
PDF
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
PDF
Docker社内勉強会
PDF
Docker入門
PDF
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
PDF
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
PDF
Docker講習会資料
PPTX
Docker入門
ゆるふわなDockerの使い方
Docker超入門
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker handson
Docker入門 - 基礎編 いまから始めるDocker管理
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker v14
DockerとDocker Hubの操作と概念
Dockerイメージ構築 実践テクニック
Docker事始めと最新動向 2015年6月
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker道場オンライン#1 Docker基礎概念と用語の理解
コンテナの基本 ~Docker実践~
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
Docker社内勉強会
Docker入門
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Docker講習会資料
Docker入門

Dockerでらくらく開発・運用を体感しよう