Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

5

Share

Download to read offline

Dockerの導入

Download to read offline

ファンタラクティブ・オープンミーティング第4回で使用した資料

Related Books

Free with a 30 day trial from Scribd

See all

Dockerの導入

  1. 1. Dockerの導入 FUNTERACTIVE OPEN MEETING VOL.04
  2. 2. FUNTERACTIVE OPEN MEETING VOL.04  Yuji Tsukaguchi ファンタラクティブ株式会社 COO, Web Designer 無料写真素材サイト ぱくたそ Enginner @regret_raym
  3. 3. ■ 本番環境のアプリケーションバージョン ・WordPress、PHP、MySQL、Apache、Nginx… ! ■ それに合わせた開発環境 ・VirtualBox、VPS、Heroku… ! ■ 早い、軽いで話題のDockerを試す FUNTERACTIVE OPEN MEETING VOL.04  はじめに
  4. 4. FUNTERACTIVE OPEN MEETING VOL.04 
  5. 5. Under the hood, Docker is built on the following components: ・The cgroup and namespacing capabilities of the Linux kernel; ・AUFS, a powerful union filesystem with copy-on-write capabilities; ・The Go programming language; ・lxc, a set of convenience scripts to simplify the creation of Linux containers. FUNTERACTIVE OPEN MEETING VOL.04  Docker? https://github.com/docker/docker/blob/master/README.md#under-the-hood
  6. 6. AUFSとLXCを使って いい感じにコンテナ化してくれる FUNTERACTIVE OPEN MEETING VOL.04 
  7. 7. Apps Apps ゲストOS ゲストOS 仮想マシン仮想マシン ユーザー空間 OS process process process カーネル空間 FUNTERACTIVE OPEN MEETING VOL.04  VirtualBox 物理マシン ハードウェアごと仮想化
  8. 8. ユーザー空間 カーネル空間 FUNTERACTIVE OPEN MEETING VOL.04  LXC Linux Containers 物理マシン Apps OS process process Apps process process ユーザー空間を分割して仮想化
  9. 9. AUFS DVD-ROM FUNTERACTIVE OPEN MEETING VOL.04  AUFS Another Union File System File System modify new read-write read-only A’ B C A’ C A B http://itpro.nikkeibp.co.jp/article/Keyword/20090209/324482/?SS=imgview&FD=-692683090&ST=oss
  10. 10. Docker file system http://docs.docker.com/terms/layer/ FUNTERACTIVE OPEN MEETING VOL.04  Container writable ! Image read-only ! Base image
  11. 11. Docker install FUNTERACTIVE OPEN MEETING VOL.04 
  12. 12. FUNTERACTIVE OPEN MEETING VOL.04  Install # yumからインストール $ sudo yum install docker-io ! # docker起動 $ sudo service docker start ! # サービス登録 $ sudo chkconfig docker on ! # バージョン確認 $ docker -v Docker version 1.3.1, build c78088f/1.3.1 ※VirtualBox、Vagrantを使ってインストール
  13. 13. FUNTERACTIVE OPEN MEETING VOL.04  Docker Pull docker indexからcentosのDocker Imageを取得
  14. 14. FUNTERACTIVE OPEN MEETING VOL.04  docker image取得 # 公式リポジトリからcentosのイメージを取得 $ sudo docker pull centos ! # 取得したイメージを確認 $ sudo docker images centos
  15. 15. $ sudo docker run -i -t centos /bin/bash OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  container a52e5157470c base image process process centos コンテナ作成
  16. 16. コンテナ内にwget入れる $ yum install -y wget OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  container wget base image process process centos
  17. 17. FUNTERACTIVE OPEN MEETING VOL.04  コンテナをコミット $ sudo docker ps -a ! $ sudo docker commit a52e5157470c centos/wget CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a52e515747 0c centos:latest "/bin/ bash" 10 minutes ago Exited (0) 2 minutes ago agitated_poincare docker ps -aで確認できる項目
  18. 18. read-onlyのイメージ OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/wget base image process process centos
  19. 19. centos/wgetを元に新規コンテナ $ sudo docker run -i -t centos/wget /bin/bash OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/wget base image process process centos container 921e5f3f895e
  20. 20. centos/wgetを元に新規コンテナ OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/wget base image process process centos container $ yum install -y vim vim
  21. 21. vimを入れたコンテナをコミット $ sudo docker commit 921e5f3f895e centos/vim OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/vim image centos/wget base image process process centos
  22. 22. 複数のコンテナ起動 $ sudo docker run -i -t centos/wget /bin/bash $ sudo docker run -i -t centos/vim /bin/bash OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  container image image base image process process container image base image process process centos/wget centos/vim
  23. 23. FUNTERACTIVE OPEN MEETING VOL.04  コマンド一例 # リモートリポジトリからイメージ取得 $ docker pull REPOSITORY[:TAG] ! # イメージ一覧 $ docker images ! # イメージからコンテナを起動接続 $ docker run -i -t IMAGE /bin/bash ! # コンテナを起動 $ docker start CONTAINER ! # コンテナを終了 $ docker stop CONTAINER ! # コンテナを削除 $ docker rm CONTAINER # イメージを削除 $ docker rmi IMAGE ! # 起動しているコンテナに接続 $ docker attach CONTAINER ! # 起動しているコンテナ一覧 $ docker ps ! # 全てのコンテナ $ docker ps -a ! # コンテナを全て停止 $ docker stop `docker ps -aq` ! # コンテナを全て削除 $ docker rm `docker ps -aq`
  24. 24. SSHで接続 FUNTERACTIVE OPEN MEETING VOL.04 
  25. 25. FUNTERACTIVE OPEN MEETING VOL.04  SSH # コンテナ起動 $ docker run -t -i centos /bin/bash ! # 必要なパッケージインストール $ yum install -y passwd openssh openssh-clients openssh-server ! # rootパスワード変更 $ passwd ! # sshdの変更 $ vi /etc/ssh/sshd_config UsePAM no ! $ exit
  26. 26. FUNTERACTIVE OPEN MEETING VOL.04  コンテナ起動と接続 # コンテナ確認 $ sudo docker ps -a ! # 先ほどのコンテナをコミット $ sudo docker commit XXXXXXX centos/sshd ! # -dオプションでデーモン化、SSHが起動した状態でコンテナ起動 $ sudo docker run -d -p 22 centos/sshd /usr/sbin/sshd -D ! # docker ps -aでフォワードと、ifconfigでIPを確認する $ ssh root@XXX.XX.XX.X -p PORT
  27. 27. Supervisor FUNTERACTIVE OPEN MEETING VOL.04 
  28. 28. FUNTERACTIVE OPEN MEETING VOL.04  Supervisor Dockerでは、プロセスを起動させるコマンドが一つしか選択できな いようなので、Python製のプロセス管理ツールSupervisorを使う。 # yum install $ yum install -y python-setuptools ! # supervisord インストール $ easy_install supervisor ! # supervisord起動スクリプト $ vi /etc/init.d/supervisord ! https://gist.github.com/regret/da56a239cb581089c813
  29. 29. FUNTERACTIVE OPEN MEETING VOL.04  Supervisord設定 # Supervisord config include ! $ echo_supervisord_conf > /etc/supervisord.conf ! $ echo "[include]" >> /etc/supervisord.conf ! $ echo "files = supervisord/conf/*.conf" >> /etc/ supervisord.conf ! $ mkdir -p /etc/supervisord/conf/
  30. 30. FUNTERACTIVE OPEN MEETING VOL.04  Supervisord設定 # Supervisord service.conf $ vi /etc/supervisord/conf/service.conf ! [supervisord] nodaemon=true ! [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true ! [program:httpd] command=/usr/sbin/httpd -c "ErrorLog /dev/stdout" - DFOREGROUND redirect_stderr=true
  31. 31. FUNTERACTIVE OPEN MEETING VOL.04  コンテナ起動と接続 # コミット $ sudo docker commit XXXXXXX centos/supervisord ! # 開放ポートを指定して起動 $ sudo docker run -d -p 22 -p 80 centos/supervisord /usr/ bin/supervisord ! # ポートマッピング確認 $ sudo docker ps -a ! # SSHログイン $ ssh root@127.0.0.1 -p PORT
  32. 32. Dockerで複数Webサーバ FUNTERACTIVE OPEN MEETING VOL.04 
  33. 33. Dockerに複数Webサーバ 80 FUNTERACTIVE OPEN MEETING VOL.04  container container Domain A Apache Domain B Nginx proxy 80 Nginx Supervisord run プロセス管理ツール
  34. 34. Domain AのSupervisord # sshdとhttpdを設定 $ vi /etc/supervisord/conf/service.conf ! [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true [program:httpd] command=/usr/sbin/httpd -c "ErrorLog /dev/stdout" - DFOREGROUND redirect_stderr=true FUNTERACTIVE OPEN MEETING VOL.04 
  35. 35. Domain BのSupervisord # sshdとnginxを設定 $ vi /etc/supervisord/conf/service.conf ! [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true [program:nginx] command=/usr/sbin/nginx -c /etc/nginx/nginx.conf redirect_stderr=true FUNTERACTIVE OPEN MEETING VOL.04 
  36. 36. FUNTERACTIVE OPEN MEETING VOL.04  ホスト側のnginx設定 # コンテナのポートマッピング確認 $ sudo docker ps -a ! # プロキシ設定 $ sudo vi /etc/nginx/conf.d/proxy.conf ! proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; !
  37. 37. FUNTERACTIVE OPEN MEETING VOL.04  ホスト側のnginx設定 # nginxのリバースプロキシ設定 $ sudo /etc/nginx/conf.d/virtual.conf ! server { listen 80; server_name hogehoge.jp; location / { proxy_pass http://127.0.0.1:XXXXX; } } server { listen 80; server_name piyopiyo.jp; location / { proxy_pass http://127.0.0.1:XXXXX; } } 調べたポート番号
  38. 38. Docker registry FUNTERACTIVE OPEN MEETING VOL.04 
  39. 39. FUNTERACTIVE OPEN MEETING VOL.04 
  40. 40. ご清聴ありがとうございました FFUUNNTTEERRAACCTTIIVVEE OOPPEENN MMEEEETTIINNGG VVOOLL..0034 
  • tatuyakoizumi

    Feb. 11, 2015
  • mersy

    Nov. 26, 2014
  • YoshinoriKoba

    Nov. 25, 2014
  • ABEDaisuke

    Nov. 25, 2014
  • msykiino

    Nov. 25, 2014

ファンタラクティブ・オープンミーティング第4回で使用した資料

Views

Total views

1,326

On Slideshare

0

From embeds

0

Number of embeds

30

Actions

Downloads

11

Shares

0

Comments

0

Likes

5

×