61
Dockerで楽しむ P R E S E N T A T I O N : フロントエンドエンジニア 堀祐磨 (ホリデー) 自宅サーバ

Dockerで楽しむ自宅サーバ

Embed Size (px)

Citation preview

Page 1: Dockerで楽しむ自宅サーバ

Dockerで楽しむP R E S E N T A T I O N :

フロントエンドエンジニア 堀祐磨 (ホリデー)

自宅サーバ

Page 2: Dockerで楽しむ自宅サーバ

自己紹介

堀 祐磨 (ほりでー)

1988年生まれ。多摩美術大学を中退後、デザイナーとしてグラフィックデザイン・Webデザイン・UIデザインを経験。

2015年、株式会社LIGにフロントエンドエンジニアとして入社。

Page 3: Dockerで楽しむ自宅サーバ

自宅サーバって楽しい!

Page 4: Dockerで楽しむ自宅サーバ

Redmine

Page 5: Dockerで楽しむ自宅サーバ

タスク管理

Page 6: Dockerで楽しむ自宅サーバ

ブックマーク管理

Page 7: Dockerで楽しむ自宅サーバ

便利

Page 8: Dockerで楽しむ自宅サーバ

Gitbucket

Page 9: Dockerで楽しむ自宅サーバ

オレオレプライベートリポジトリ

Page 10: Dockerで楽しむ自宅サーバ

めっちゃ高機能

Page 11: Dockerで楽しむ自宅サーバ

便利

Page 12: Dockerで楽しむ自宅サーバ

ResourceSpace

Page 13: Dockerで楽しむ自宅サーバ

購入したストックフォトや収集したデザイン資料の管理

Page 14: Dockerで楽しむ自宅サーバ

12000件・26GBのデータを横断的に管理!

Page 15: Dockerで楽しむ自宅サーバ

便利!

Page 16: Dockerで楽しむ自宅サーバ

とはいえ…

Page 17: Dockerで楽しむ自宅サーバ

インストールが超面倒

Page 18: Dockerで楽しむ自宅サーバ

バックアップ面倒

Page 19: Dockerで楽しむ自宅サーバ

マシンの移行とかOSのアップデートで壊れて入れ直す

のが面倒

Page 20: Dockerで楽しむ自宅サーバ

もっと楽にしたいなぁ

Page 21: Dockerで楽しむ自宅サーバ

たまたま読んだ 『サーバ/インフラ徹底攻略』

http://www.amazon.co.jp/dp/4774167681/

@2015年2月~

Page 22: Dockerで楽しむ自宅サーバ

Immutable Infrastructure?

Page 23: Dockerで楽しむ自宅サーバ

イミュータブル・インフラストラクチャーサーバの設定が全部設定ファイル化されてる

設定ファイルの通りに自動で構成される

自動でいつでも作れるから、サーバは いつ消してもOK

chef・Vagrant・Dockerとかその辺り

Page 24: Dockerで楽しむ自宅サーバ

めっちゃ便利じゃん!

Page 25: Dockerで楽しむ自宅サーバ

つくってみた

Page 26: Dockerで楽しむ自宅サーバ

ぼくがかんがえたさいきょうの自宅サーバ

ハード:Mac mini Server(mid 2011)

ホストOS: OSX Server 10.10.5

仮想マシン環境:Vagrant + VirtualBox

Linux環境(Dockerホスト): CoreOS

アプリケーションはDockerで構成

Page 27: Dockerで楽しむ自宅サーバ
Page 28: Dockerで楽しむ自宅サーバ
Page 29: Dockerで楽しむ自宅サーバ
Page 30: Dockerで楽しむ自宅サーバ

Vagrant

Page 31: Dockerで楽しむ自宅サーバ

Vagrant (+VirtualBox)

VirtualBoxのAPIを使って仮想マシンの設定を自動化したり、起動時に任意のシェルスクリプトを走らせたりできる

MacOSXでLinux動かすのに必要

構文がruby

Page 32: Dockerで楽しむ自宅サーバ

Vagrant (+VirtualBox)

VirtualBoxのブリッジ接続+MACアドレス固定で、LANのDHCPサーバからIPを固定

データ保存用の外部ディスクを作成し、仮想マシンに接続

このあたりの書き方はVagrantとVirtualBoxのリファレンスを見てがんばる

Page 33: Dockerで楽しむ自宅サーバ

CoreOS

Page 34: Dockerで楽しむ自宅サーバ

CoreOS

大規模クラウドサービス向けLinuxディストリビューション

DockerとかRocketがインストール済

余計なものは何もインストールできない

設定が1ファイルで済む(systemd)

マウントやネットワーク設定はsystemdのリファレンス見てがんばる

Page 35: Dockerで楽しむ自宅サーバ

CoreOS

なんでboot2Docker使わなかったの?

→開発用っぽい感じが嫌だったから(適当)

Page 36: Dockerで楽しむ自宅サーバ

Docker

Page 37: Dockerで楽しむ自宅サーバ

学習コストはちょっと高いかも…

Page 38: Dockerで楽しむ自宅サーバ

• 今のところDockerはLinux上でしか動かない (近々Winも動く!?) • Dockerコンテナは軽量Linuxコンテナという仮想化技術 • Dockerコンテナはホストや他のコンテナから隔離された環境 • Dockerコンテナは仮想マシンというよりはプロセス • DockerコンテナはDockerイメージを実行したもの • Dockerイメージは変更履歴の差分を積み重ねた特殊なファイルシステム

• Dockerコンテナ上の変更も、元になるDockerコンテナの差分として扱われる

• Dockerコンテナ上の差分は、Dockerコンテナを削除したら消える • Dockerコンテナはカジュアルに作ったり消したりする • DockerイメージはDockerfileで自作できる • 他人の作ったDockerイメージに、自分で差分を積み重ねてカスタマイズできる

• 1つのDockerコンテナが1つのアプリケーションを担い、複数コンテナが連携してサービスを構築する

• DockerイメージはDockerHubからダウンロードする • 自分でDockerイメージのリポジトリを自作することもできる

前提として理解する必要があること

Page 39: Dockerで楽しむ自宅サーバ

• docker runオプション多くて覚えにくい!これさえやれば他は惰性でOK

• docker ps • docker stop • docker rm • docker build • docker exec • docker cp

使い方を理解する必要があるコマンド・構文

一回ひととおり使うと困らない

• docker-compose up • docker-compose build • docker-compose ps • docker-compose stop • docker-compose rm

実際使うのはむしろこっちでは

Page 40: Dockerで楽しむ自宅サーバ

時間がない人はdocker-compose

から入った方がむしろ楽

Page 41: Dockerで楽しむ自宅サーバ

単機能のコンテナが連携し合うのがdockerによるサービスの構築

MySQLコンテナ

Redmineコンテナ

接続

ResourceSpaceコンテナ

接続

dockerコマンド: コンテナ1つに対して操作するコマンド

docker-composeコマンド: 構成全体をまるっと操作するコマンド

Page 42: Dockerで楽しむ自宅サーバ

docker-composeなら、 たったこれだけのコードでサーバが立つ!

Page 43: Dockerで楽しむ自宅サーバ

http://qiita.com/y_hokkey/items/406b5a8c4bc15354d069

Page 44: Dockerで楽しむ自宅サーバ

dockerコンテナにはデータを溜められない

Page 45: Dockerで楽しむ自宅サーバ

docker run -v /data/mysql:/var/lib/mysql

Page 46: Dockerで楽しむ自宅サーバ

OSXの場合、VirtualBoxの仮想マシン上にデータ溜まっちゃう

Page 47: Dockerで楽しむ自宅サーバ

OSXと仮想マシン間でファイル共有するとパーミッション的に

厳しい

Page 48: Dockerで楽しむ自宅サーバ

DockerコンテナがImmutableでも、仮想マシンがImmutable

じゃないと嬉しくない…

Page 49: Dockerで楽しむ自宅サーバ
Page 50: Dockerで楽しむ自宅サーバ
Page 51: Dockerで楽しむ自宅サーバ

永続化データは専用の外部ディスクに

外部ディスクは、なかったら勝手に作成/あったら自動的に仮想マシンと紐付けるようVagrantfileに記述

究極的にはこれだけバックアップすればOK!

Page 52: Dockerで楽しむ自宅サーバ

http://qiita.com/y_hokkey/items/3dd0d8f20f9daadbbf0b

Page 53: Dockerで楽しむ自宅サーバ

おみやげ

Page 54: Dockerで楽しむ自宅サーバ

Immutableなら、OSXのどんな環境でも動くはず!!

Page 55: Dockerで楽しむ自宅サーバ

• パスワードとか書いてあるし • ネットワークインタフェース名がハード依存してた • ドメイン名とか外部のDNSに依存してた • なので…

と思ったけど

簡易版のデモを作りました!冒頭で紹介した3つのアプリ+αが入ってます

Page 56: Dockerで楽しむ自宅サーバ
Page 57: Dockerで楽しむ自宅サーバ

https://github.com/hokkey/vagrant-coreos-docker-demo

Page 58: Dockerで楽しむ自宅サーバ
Page 59: Dockerで楽しむ自宅サーバ

最後に宣伝

Page 60: Dockerで楽しむ自宅サーバ

http://media-massage.net/

\ ブログ作りました! /

Page 61: Dockerで楽しむ自宅サーバ

Thank you!

http://media-massage.net/株式会社LIG フロントエンドエンジニア 堀 祐磨 (ほりでー)