Dockerの導入 
FUNTERACTIVE OPEN MEETING VOL.04
FUNTERACTIVE OPEN MEETING VOL.04  
Yuji Tsukaguchi 
ファンタラクティブ株式会社 
COO, Web Designer 
無料写真素材サイト ぱくたそ 
Enginner 
@regret_raym
■ 本番環境のアプリケーションバージョン 
・WordPress、PHP、MySQL、Apache、Nginx… 
! 
■ それに合わせた開発環境 
・VirtualBox、VPS、Heroku… 
! 
■ 早い、軽いで話題のDockerを試す 
FUNTERACTIVE OPEN MEETING VOL.04  
はじめに
FUNTERACTIVE OPEN MEETING VOL.04 
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
AUFSとLXCを使って 
いい感じにコンテナ化してくれる 
FUNTERACTIVE OPEN MEETING VOL.04 
Apps Apps 
ゲストOS ゲストOS 
仮想マシン仮想マシン 
ユーザー空間 
OS process process process 
カーネル空間 
FUNTERACTIVE OPEN MEETING VOL.04  
VirtualBox 
物理マシン 
ハードウェアごと仮想化
ユーザー空間 
カーネル空間 
FUNTERACTIVE OPEN MEETING VOL.04  
LXC 
Linux Containers 
物理マシン 
Apps 
OS 
process 
process 
Apps 
process 
process 
ユーザー空間を分割して仮想化
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
Docker file system 
http://docs.docker.com/terms/layer/ 
FUNTERACTIVE OPEN MEETING VOL.04  
Container 
writable 
! 
Image 
read-only 
! 
Base image
Docker install 
FUNTERACTIVE OPEN MEETING VOL.04 
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を使ってインストール
FUNTERACTIVE OPEN MEETING VOL.04  
Docker Pull 
docker indexからcentosのDocker Imageを取得
FUNTERACTIVE OPEN MEETING VOL.04  
docker image取得 
# 公式リポジトリからcentosのイメージを取得 
$ sudo docker pull centos 
! 
# 取得したイメージを確認 
$ sudo docker images centos
$ sudo docker run -i -t centos /bin/bash 
OS ユーザー空間 
カーネル空間 
物理マシン 
FUNTERACTIVE OPEN MEETING VOL.04  
container a52e5157470c 
base image 
process 
process 
centos 
コンテナ作成
コンテナ内にwget入れる 
$ yum install -y wget 
OS ユーザー空間 
カーネル空間 
物理マシン 
FUNTERACTIVE OPEN MEETING VOL.04  
container wget 
base image 
process 
process 
centos
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で確認できる項目
read-onlyのイメージ 
OS ユーザー空間 
カーネル空間 
物理マシン 
FUNTERACTIVE OPEN MEETING VOL.04  
image centos/wget 
base image 
process 
process 
centos
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
centos/wgetを元に新規コンテナ 
OS ユーザー空間 
カーネル空間 
物理マシン 
FUNTERACTIVE OPEN MEETING VOL.04  
image centos/wget 
base image 
process 
process 
centos 
container 
$ yum install -y vim 
vim
vimを入れたコンテナをコミット 
$ sudo docker commit 921e5f3f895e centos/vim 
OS ユーザー空間 
カーネル空間 
物理マシン 
FUNTERACTIVE OPEN MEETING VOL.04  
image centos/vim 
image centos/wget 
base image 
process 
process 
centos
複数のコンテナ起動 
$ 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
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`
SSHで接続 
FUNTERACTIVE OPEN MEETING VOL.04 
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
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
Supervisor 
FUNTERACTIVE OPEN MEETING VOL.04 
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
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/
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
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
Dockerで複数Webサーバ 
FUNTERACTIVE OPEN MEETING VOL.04 
Dockerに複数Webサーバ 
80 
FUNTERACTIVE OPEN MEETING VOL.04  
container 
container 
Domain A 
Apache 
Domain B 
Nginx 
proxy 
80 
Nginx 
Supervisord 
run プロセス管理ツール
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 
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 
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; 
!
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; 
} 
} 
調べたポート番号
Docker registry 
FUNTERACTIVE OPEN MEETING VOL.04 
FUNTERACTIVE OPEN MEETING VOL.04 
ご清聴ありがとうございました 
FFUUNNTTEERRAACCTTIIVVEE OOPPEENN MMEEEETTIINNGG VVOOLL..0034 

More Related Content

PDF
Dockerと継続的インテグレーション
PPTX
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
PDF
Dockerイメージを作る
PDF
Docker入門
PDF
Docker超入門
PDF
Docker Swarm入門
PDF
Dockerハンズオン
PDF
Walter ファミリーの紹介 at Shibuya.go#1
Dockerと継続的インテグレーション
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerイメージを作る
Docker入門
Docker超入門
Docker Swarm入門
Dockerハンズオン
Walter ファミリーの紹介 at Shibuya.go#1

What's hot (20)

PPTX
DockerをRed Hatはどのように見ているのか
PDF
Dive into dockerネットワーク
PDF
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
PDF
Docker Machineを始めるには?
PPTX
Alpine linuxを触ってみよう
PDF
コンテナ情報交換会2
PDF
Dockerでデプロイ
PPTX
第一回コンテナ情報交換会@関西
PDF
清貧Docker ~個人がDockerを使う理由~
PDF
Introduce that Best practices for writing Dockerfiles
PDF
DockerでGUIアプリケーションを動かす
PDF
Docker入門
PDF
あの日実行したコンテナの名前を僕達はまだ知らない。
PDF
コマンドラインツールとしてのDocker
PDF
Docker lifecycle event hooks
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
PDF
【dots. IT勉強会】開発環境のDocker化
PPTX
Dockerを使ってみよう
PDF
Docker handson
DockerをRed Hatはどのように見ているのか
Dive into dockerネットワーク
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
Docker Machineを始めるには?
Alpine linuxを触ってみよう
コンテナ情報交換会2
Dockerでデプロイ
第一回コンテナ情報交換会@関西
清貧Docker ~個人がDockerを使う理由~
Introduce that Best practices for writing Dockerfiles
DockerでGUIアプリケーションを動かす
Docker入門
あの日実行したコンテナの名前を僕達はまだ知らない。
コマンドラインツールとしてのDocker
Docker lifecycle event hooks
ラズパイ2で動く Docker PaaSを作ってみたよ
【dots. IT勉強会】開発環境のDocker化
Dockerを使ってみよう
Docker handson
Ad

Viewers also liked (18)

PDF
Top Ruby Gems to Start A Project
PDF
Social Media Tips Infographic, November, 2013
PPTX
Gypsy Girl
PPTX
Cloud Migration - Few Pointers
PPT
Bag powerpoint
PPT
アバター量産CGM
PDF
are you paying attention
PPT
1st day ar tmud
PPTX
Presentation2 (1)
PPTX
PTFE Components & Parts
DOC
من اللمبي إلى توشكى في
PPTX
Still photo assignment
PPT
Prudential the great company
PPTX
Artist ego and context
PPT
Snapshot On Mobile Data Growth
PPTX
Grace of Mother Nature.
PPTX
Richard avedon
DOCX
Worksheet Listening
Top Ruby Gems to Start A Project
Social Media Tips Infographic, November, 2013
Gypsy Girl
Cloud Migration - Few Pointers
Bag powerpoint
アバター量産CGM
are you paying attention
1st day ar tmud
Presentation2 (1)
PTFE Components & Parts
من اللمبي إلى توشكى في
Still photo assignment
Prudential the great company
Artist ego and context
Snapshot On Mobile Data Growth
Grace of Mother Nature.
Richard avedon
Worksheet Listening
Ad

Similar to Dockerの導入 (20)

PDF
Docker実践入門
PDF
Dockerハンズオン
PDF
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
PDF
Docker講習会資料
PDF
Docker社内勉強会
PDF
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
PDF
DockerとDocker Hubの操作と概念
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PDF
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
PPTX
Dockerハンズオン
PPTX
Dockerでlamp環境を作って見る
PPTX
20230128.pptx
PDF
Docker Swarm モード にゅうもん
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
ラズパイ2で動く Docker PaaS
PDF
Dockerでらくらく開発・運用を体感しよう
PPTX
Docker Tokyo
PDF
ビルドサーバで使うDocker
PDF
JAWS-UG コンテナ支部 Docker入門 ハンズオン
PDF
LAMP環境にDocker環境を追加してみた
Docker実践入門
Dockerハンズオン
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Docker講習会資料
Docker社内勉強会
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
DockerとDocker Hubの操作と概念
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Dockerハンズオン
Dockerでlamp環境を作って見る
20230128.pptx
Docker Swarm モード にゅうもん
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
ラズパイ2で動く Docker PaaS
Dockerでらくらく開発・運用を体感しよう
Docker Tokyo
ビルドサーバで使うDocker
JAWS-UG コンテナ支部 Docker入門 ハンズオン
LAMP環境にDocker環境を追加してみた

More from regret raym (18)

PDF
React入門-JSONを取得して表示する
PDF
SlackにHubotを設定して対話する
PDF
CreateJSを使ったアニメーション表現の基礎
PDF
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
PDF
FluentdとGrothForecastをインストールする
PDF
Chefで作る開発環境
PDF
Jenkinsの導入 vol.02 Bitbucketと連携する
PDF
Jenkinsの導入 Vol.01
PDF
MT東京 ぱくたそ/PAKUTASO
PDF
今から始めるPhotoshopによるWeb制作-初期設定編
PDF
Web制作のアレコレ
PDF
Yurufuwa007
PDF
WordPressで投稿記事情報の取得方法
PDF
WordCamp Tokyo2012 handson Portfolio
PDF
WordCamp Tokyo2012 Session
PDF
Movable typeでモバイルギャラリーサイト
PDF
Css拡張言語のコトハジメ
PDF
Wp html5
React入門-JSONを取得して表示する
SlackにHubotを設定して対話する
CreateJSを使ったアニメーション表現の基礎
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
FluentdとGrothForecastをインストールする
Chefで作る開発環境
Jenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 Vol.01
MT東京 ぱくたそ/PAKUTASO
今から始めるPhotoshopによるWeb制作-初期設定編
Web制作のアレコレ
Yurufuwa007
WordPressで投稿記事情報の取得方法
WordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 Session
Movable typeでモバイルギャラリーサイト
Css拡張言語のコトハジメ
Wp html5

Dockerの導入

  • 2. FUNTERACTIVE OPEN MEETING VOL.04  Yuji Tsukaguchi ファンタラクティブ株式会社 COO, Web Designer 無料写真素材サイト ぱくたそ Enginner @regret_raym
  • 3. ■ 本番環境のアプリケーションバージョン ・WordPress、PHP、MySQL、Apache、Nginx… ! ■ それに合わせた開発環境 ・VirtualBox、VPS、Heroku… ! ■ 早い、軽いで話題のDockerを試す FUNTERACTIVE OPEN MEETING VOL.04  はじめに
  • 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
  • 7. Apps Apps ゲストOS ゲストOS 仮想マシン仮想マシン ユーザー空間 OS process process process カーネル空間 FUNTERACTIVE OPEN MEETING VOL.04  VirtualBox 物理マシン ハードウェアごと仮想化
  • 8. ユーザー空間 カーネル空間 FUNTERACTIVE OPEN MEETING VOL.04  LXC Linux Containers 物理マシン Apps OS process process Apps process process ユーザー空間を分割して仮想化
  • 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. Docker file system http://docs.docker.com/terms/layer/ FUNTERACTIVE OPEN MEETING VOL.04  Container writable ! Image read-only ! Base image
  • 11. Docker install FUNTERACTIVE OPEN MEETING VOL.04 
  • 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. FUNTERACTIVE OPEN MEETING VOL.04  Docker Pull docker indexからcentosのDocker Imageを取得
  • 14. FUNTERACTIVE OPEN MEETING VOL.04  docker image取得 # 公式リポジトリからcentosのイメージを取得 $ sudo docker pull centos ! # 取得したイメージを確認 $ sudo docker images centos
  • 15. $ sudo docker run -i -t centos /bin/bash OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  container a52e5157470c base image process process centos コンテナ作成
  • 16. コンテナ内にwget入れる $ yum install -y wget OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  container wget base image process process centos
  • 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. read-onlyのイメージ OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/wget base image process process centos
  • 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. centos/wgetを元に新規コンテナ OS ユーザー空間 カーネル空間 物理マシン FUNTERACTIVE OPEN MEETING VOL.04  image centos/wget base image process process centos container $ yum install -y vim vim
  • 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. 複数のコンテナ起動 $ 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. 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. SSHで接続 FUNTERACTIVE OPEN MEETING VOL.04 
  • 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. 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. Supervisor FUNTERACTIVE OPEN MEETING VOL.04 
  • 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. 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. 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. 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
  • 33. Dockerに複数Webサーバ 80 FUNTERACTIVE OPEN MEETING VOL.04  container container Domain A Apache Domain B Nginx proxy 80 Nginx Supervisord run プロセス管理ツール
  • 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. 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. 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. 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. Docker registry FUNTERACTIVE OPEN MEETING VOL.04