Web制作会社 meets Docker
Upcoming SlideShare
Loading in...5
×
 

Web制作会社 meets Docker

on

  • 1,340 views

 

Statistics

Views

Total Views
1,340
Views on SlideShare
830
Embed Views
510

Actions

Likes
3
Downloads
6
Comments
0

6 Embeds 510

http://d.hatena.ne.jp 478
https://twitter.com 14
http://s.deeeki.com 9
http://feedly.com 7
http://headline.no-ip.com 1
http://inset26.rssing.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Web制作会社 meets Docker Presentation Transcript

  • 1. Web制作会社 meets 月刊ライトニングトーク 2014年5月号 (β) 2014年5月19日 松本英夫 @pekeq / RYDEN Inc.
  • 2. 自己紹介 • 松本英夫 (@pekeq) • 株式会社ライデン • アラフォープログラマー – インターネット技術で20年 経歴だけ長くて実力が伴わない残念なタイプです – PHP, Python, (Coffee|Type|Java)Script
  • 3. ざっくりdockerとは? • 「軽い」仮想化環境 – 立ち上がりが早い – メモリやディスクを(そんなに)食わない • 最近流行してる – github風に「ぼくのさいきょうのVM」を公開できる • いみゅーたぼー
  • 4. 他の仮想化環境との違い • 「コンテナ」を作ることに特化 – アプリケーションに必要な依存をひとまとめにして、「コンテナ」 として配布できる – Devはコンテナ内部の品質を作り込めば良く、Opsはコンテナの 外側から操作すればよい • 厳密な仮想化ではない – 「アプリケーション環境を分離させること」が目的 • 「筋肉増強剤を用いたchrootみたいなもの」 – その分、軽い
  • 5. Why Container?
  • 6. (閑話休題) 「コンテナ」小話 • 「沖仲仕」という仕事があります 。(略) • 港で、輸送船の荷物の積み替えをする、「荷揚げ労働者」 の人達のことです。 • コンテナによる輸送という新しいシステムを思いついてか ら数年で、(略) 積み込みから輸送先までコンテナを下ろ すこと無く届けるサービスに変わりました。 • コンテナへの積み込みも陸で行いトラックに載せ、港でコ ンテナごと積み替えるので、積み替えの仕事が無い。 「孫の代までの仕事」が10年で消えたケース http://d.hatena.ne.jp/repon/20121030/p1
  • 7. Web制作会社の納品 • 制作して、ファイルで納品 – コンテンツはクライアント側でサーバーに配置 • クライアント先サーバーに入り口は置くが、 一部API処理(eg. Facebook API)だけ自社運用 • 環境構築・コンテンツ制作・運用まで自社で 実施
  • 8. クライアントのサーバー • 各社異なる環境/ミドルウェア – 去年までPHP4(!)の環境が生き残っていたり – ファイル保存先のディレクトリ構成が違っていたり • 各社異なるルール – 共通ヘッダ・フッタとか – 共通のおまじないとか • これらを上手く分離して開発したい
  • 9. これまで • VirtualHostを一杯作る • 案件ごとにさくらVPSを買う • 社内に置いたサーバーで VMware vSpshere Hypervisor(旧ESXi)を使う
  • 10. VirtualHostを一杯作る • 安い(さくらVPS 934円/月・税別) • 放っておくぶんにはラク • httpd.confが地獄のようになる • 古い案件がいつまでも残る • httpd.confだけでは分けきれないものがある
  • 11. 案件ごとにさくらVPSを買う • 案件がはじまったら契約、終わったら解約 • 専用で環境を立てるので、開発の支障は少ない • ムダが多い – VPS1台の能力を使い切ることは、ほぼない – 解約処理してから実際に解約できるまで2ヶ月
  • 12. VMwareで仮想化 • 社内に置いたサーバー (HDD 2TB, MEM 8GB)で運用 • 安定性はピカイチ • 毎回OSインストールからやるので結構手間 – 案件を開始するたびにUbuntuの新しいのが出てる • 社外に公開できない – がんばって設定すればできるけど、面倒 • OSまるごと起動なのでメモリ/ディスクを結構食う
  • 13. そこでDockerですよ • さくらVPS HDDプラン 2G – コンテナを複数立てても大丈夫 • 環境ごとの独立性は良い – 今PHP4が必要です!と言われても何とかなる – Web制作する上では十分 • さくらVPS(Ubuntu LTS)の標準カーネルで動く – OpenVZみたいに独自のカーネルを入れなくて良い
  • 14. Dockerの問題点 • コマンド実行が終わったらコンテナが終了する • Apacheずーっと起動とかやりづらい • DockerfileのCMDにコマンドを書いて実行できるが、CMDで実 行できるコマンドは一つだけ – ApacheとSSHD両方起動したいとか、どうしたら? • → CMDでsuperviordを起動 – 各種デーモンはsuperviordから起動 • sshd, apache, 等
  • 15. ベース image Apache image 案件別 image Ubuntu image docker.io公式のUbuntu image 自社特有の環境構築をする ・SSHの公開鍵を入れる、timezone設定など Apache + PHP5の環境構築をする 案件別の構成をする imageの作り
  • 16. ベース image Apache image 案件別 image Ubuntu image 手で設定して、一段落したら docker commitする Dockerfileで定義して作る
  • 17. コンテンツのデプロイ ① 開発者がgitリポジトリに コンテンツをpush ② git pushをBacklogが Jenkinsに通知 ③ Jenkinsがgitリポジトリを pullして、コンテナにrsync
  • 18. アクセス振り分け Apache httpd + mod_proxy Wildcard DNSで *.stg.ryden.co.jp を受ける mod_proxyで 各コンテナに振り分け
  • 19. アクセス振り分け • mod_proxyのルールは、手で書いています – docker runした後、docker inspectでコンテナのIPアド レスを拾って、httpd.confに記載 – OS再起動すると、非常にだるいことになります – 面倒なので、どっかにいいツールがないかしら、とは 思っております…
  • 20. ムリをしない • 環境設定でがんばり過ぎると後が続かない • 環境毎の細かいことはDockerfile化せず、手 で設定したあとcommit • Chef化しない & デプロイはrsyncでユルく – 広告案件なんて長くても6ヶ月 – いみゅーたぼーじゃない!でも気にしない!
  • 21. Dockerを使って数ヶ月経過 • Vhostで十分すぎる案件はVhostに戻しました – Docker起動するのすら、面倒 – Dockerだと、外部から直接SFTPできない • テスト環境以上のものを置くのは怖い – Jenkins等、永続データが必要なものはホストOS 側で動かしています
  • 22. ハマり事例 • 今日、何気なくapt-get upgradeしたら全コンテナ死亡。 二度と返らぬ人に – 動いていたコンテナをdocker commitして再起動してもう 動かず… • ホストUbuntuのバージョンが古かった?(12.04 LTS) – Ubuntuをupgradeしたら動き出しました • まだproductionで使うのは怖い…かな?