Skip to content

Instantly share code, notes, and snippets.

@yusukegoto
Last active August 29, 2015 14:03
Show Gist options
  • Save yusukegoto/e8778a90421f453ecb72 to your computer and use it in GitHub Desktop.
Save yusukegoto/e8778a90421f453ecb72 to your computer and use it in GitHub Desktop.
Docker Meetup Tokyo #3
Docker Meetup #3
2014/7/4 18:50-21:40
URL: <http://connpass.com/event/6998/>
[meetpの前に]
[サーバプロビジョニングのレイヤ]
レイヤ
bootstrapping
OSをインストールしてサーバを起動する
AWS, OpenStack, Kickstart
configuration
サーバにミドルウェアを入れて利用可能にする
Chef, Puppet, Ansible, salt
orchestration
複数サーバを協調させて一つのサービスを利用できるようにする
Capistrano, Fabric, Consul, Serf
参考
mizzyさんのブログ
<http://mizzy.org/blog/2013/10/29/1/>
[Dockerとは]
アプリケーションの実行環境ごとまるっと持ち運びできる早くて便利な仮想化技術
上のbootstrapping, configuration済みの仮想化イメージを持ち歩く
AWSのAMIみたいなことが手元でできる
Immutable Infrastructure(II, あいあい)を実現するツールとして利用されている
@it Dockerの基礎知識
<http://www.atmarkit.co.jp/ait/articles/1405/16/news032.html>
公式
<https://www.docker.com/>
Web + DB Press Vol. 79
[まとめ]
コンテナ間の協調としてオーケストレーション周りのデザインが大事。ツールの決定打はまだない
ホストとコンテナが1:1, 1:nの構成でネットワークオプションや監視方法を変える
ifconfigを使う人はおじさん。ip addrを使いましょう
Dockerでのデプロイの環境で悩んだらFlynnを参考にするのが吉
Dockerを利用したホストマシンの内外のインフラ設計はガチ
管理するサーバが多いところはDockerを使ってプライベートHerokuをつくろうとしている
[所感]
みんな模索しながら使っている
1:nの場合ネットワークの知識がすごい必要っぽい
自分の案件ではChefでサーバ建てているので差し迫ってDocker必要ない
ツールの乱立と模索感がはんぱない。付いて行けないwwww
Dockerのgithubにlib系のオーケストレーションツールがいくつか提供されている
Apache ZookeeperやMesosは調べてみたい...
# mesosはWeb + DB Press Vol. 81のとこに記述あり
ここから内容
[開催の挨拶] 田中さん@はてな
(Web + DB Press Vol. 81でImmutable Infrastructureの記事書いてます)
今日の朝にDocker1.1がリリースされた!!
本番や開発環境で使っているのは会場で10%くらい
[Orchestration Tools] @philwhln
solomon hykesにインタビューした
stackato
ActiveState
プライベートPaas
Dockerでデプロイできるようになる
Docker -> stackato -> Heroku
DockerはOrchestrationは今はない
1 machine 1 containerは楽
1 machine many containersはしんどい
many machines many containersはもっとしんどい
Provツール
Chef
Puppet
Ansible
Salt
Orchestration Tool
libswarm
<https://github.com/docker/libswarm>
Netflix
<http://nirmata.com/2013/10/netflix-oss-meet-docker/>
libcontainer
<https://github.com/docker/libcontainer>
kubernetes
cluster container tool
<https://github.com/GoogleCloudPlatform/kubernetes>
サービスを発見する
Apache zookeeper
Consul
By M.Hashimoto
gossip protocol
Mesos
大学からできたプロダクト
etcd+fleet
複数のコンテナからのログの収集はlogstash使ってる
Paas便利
いっぱいあるけどあえてCloud Foundry + Docker + consulをおすすめかも
# 楽天もCloud Foundry使っている
[Monitoring Docker with Mackerel] @stanaka
マカレル
はてなのCTO
1. Monitoring Docker
コンテナごとのCPUやメモリが見れない
ホスト全体の値しかみえない
ホスト側からのモニタリングcgoupのレポートを利用
Ubuntuの場合
/sys/fs/cgroup/cpuacct/docker/{コンテナID}/cpuacct.stat
/sys/fs/cgroup/memory/docker/{コンテナID}/memory.stat
rssとmaped_fileを見ればいいらしい
docker topの情報がホストからとれる
ホストとコンテナの関係
1:n
CIサーバ・開発サーバ
1:1
本番サーバ
AWSのElastic Beanstalkもこれ
2. Deploy with DockerHub
github -> Docker Hub -> Hubot
hubot
ふーぼっと
チャットツール
スクリプト書けばデプロイもできる
今は古いコンテナの削除は手でやっている
Docker Hub
Automated Build
プライベートリポジトリが今なら一個ただ
imageのpushがレイテンシの関係で遅い!
3. Monitoring Docker with Mackerel
日本語で鯖
ロールごとにグラフを可視化できる
agentはsensu互換の出力
docker run -e 'ENV=HOGEHOGE' my/image
mackerel-dockerのプラグインは順次公開予定
Q&A
監視対象
1:1ならホスト側の負荷とコンテナがだいたい同じっぽいのでホストの監視でいい
1:nならホスト側からコンテナを見ないといけない
Dockerレジストリ
# ???
systemd
[Dive into Dockerネットワーク] @mainyaa
Topgateの人
コンテナ間通信の方法
DockerのNetworking
ip a
ifconfigはおっさん
方法
-link
別ネットワークが構築できて複数コンテナでネットワーク作れる
スケールできない
異なるホストにはlinkできない
ホストネットワークで実行
$ docker run --net=host
仮想vethを作らない
1:1環境ならおすすめ
open vSwitch
OSSの仮想スイッチ
$ docker run -b=none
すべてのコンテナをdocker0経由にしてvswitchでネットワーク作る
# ambassador containerもあるってツイートが
<https://docs.docker.com/articles/ambassador_pattern_linking/>
安全
IPがかぶるかも
docker-dhcpとか建てた方がいい
ロックインをさけるためにOrchestrationツールを使おう
Q&A
mac vlanってどう?
試したことない
[Age of Flynn] @deeet
楽天koboのアプリケーションエンジニア
rbdock
<https://github.com/tcnksm/rbdock>
Flynn
不倫
Dockerを使ったOSSのPaasプロジェクト
たくさんの役割のDockerコンテナが協調している
Dockerの運用で困ったら参考にできる
Herokuの簡便さとEC2の自由さの溝を埋める
類似
dokku
100行くらいのbashで実装
マルチホストに対応
Deis
CoreOSを利用したマルチホスト
Herokuやmesosの機能を持っている!!
Layer0
Flynn/discovered
サービスディスカバリー
ホスト間でクラスタが構成
リーダがいる
Flynn/flynn-host
Dockerのコンテナを管理
ジョブの管理
Xの処理をYというDockerイメージのコンテナで動かす
Layer1
たくさんコンポーネントある
クラスタでそれぞれ一個ずつみたいな感じ
flynn/flynn-controller
HTTP APIサーバ
flynn/gitreceived
git pushを受け取ることに特化したsshサーバ
flynn/slugbuilder
Herokuのslugみたいな感じ
flynn/slugrunner
デプロイするやつ
herokuのdynoみたいな
今後
production環境での安定した動作を最優先
flynn/pinkerton
docker以外でもコンテナ使えるようにするプラグイン
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment