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

1,831 views

Published on

第6回 よこはまクラウド勉強会

Published in: Software
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,831
On SlideShare
0
From Embeds
0
Number of Embeds
402
Actions
Shares
0
Downloads
22
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

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

×