Contenu connexe Similaire à いまからでも遅くない Docker事始め&愉快な仲間達 (20) いまからでも遅くない Docker事始め&愉快な仲間達1. Dockerと愉快な仲間たち
SoftLaye r と Blu e mix 利用者の ための Do cke r 入門
SoftLayer Bluemix Summit 2015 #slbm15
2015年9月2日(水)
@zembutsu
背景画像CREDIT:スフィア / PIXTA(ピクスタ)
https://pixta.jp/@sphere
5. 5
自己紹介
‣ @zembutsu a.k.a. 前佛雅人
- Technology Evangelist; Creationline, Inc. – 1.5 yrs
- Data Center Operations Engineer – 15+ yrs
興味関心:運用監視自動化、趣味でOSSやクラウド系の検証・情報発信
- SlideShare http://slideshare.net/zembutsu
- Blog http://pocketstudio.jp/log3
書籍・記事
- Serf/Consulで管理を自動化! (Gihyo.jp)
http://gihyo.jp/admin/feature/01/serf-consul
- HashiCorpのツール群からみる
インフラ構築運用の未来 (Think IT)
http://thinkit.co.jp/book/2015/03/05/5700
Why am I here?
+MasahitoZembutsu
ISBN-10: 4774174416 ISBN-10: 4844338145 ISBN-10: 4798139785
18. 18SoftLayer と Bluemix 利用者のための Docker 入門
発生する課題
‣ 環境の差異による動く・動かない、及び検証コスト
開発・テスト環境・本番環境におけるライブラリやコマンドの有無、バージョンの差違、環境依存問題
‣ 構築済みの環境を、拡大・縮小しづらい
アプリケーションの動作環境と、システム基盤の管理を別々のチームや部署が行っている場合
‣ 複雑化する管理
各チームや部署が統一性の無い"セルフ標準"を持っているため、作業標準化の壁
19. 19SoftLayer と Bluemix 利用者のための Docker 入門
‣ 「コンテナ化」と総称される技術
LXC, FreeBSD jail, Solaris Containers, OpenVZ, Linux VServer
• LXC は Linux kernel 2.6.29 ~ 取り込まれる ( cgroups 関連 )
• 2014年2月20日 LXC 1.0 のリリース
‣ 標準化するという新しい選択肢
• Linux では前から利用可能であったが、設定が煩雑・面倒
Docker は Linux の kernel 機能を使って
アプリケーションを Docker 化 ( Docker イメージ化して対応 )
対策はあるのだろうか?
20. 引用
Docker 0.9: introducing execution drivers and libcontainer | Docker Blog
https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
22. 22SoftLayer と Bluemix 利用者のための Docker 入門
‣ コンテナとは、ホストOS上のKernel機能を使い
複数のルート・ファイルシステムを実行できる。
各々の root ファイルシステムの事を「コンテナ」( container ) と呼称する。
これ何て chroot?と言われる所以。
‣ 各々のコンテナは各々のリソースを持つ
プロセス(計算資源)
メモリ
デバイス
ネットワーク
Dockerとコンテナ
23. 23SoftLayer と Bluemix 利用者のための Docker 入門
‣ 操作の分かりやすさ、使いやすさ
LXC を直接管理するよりも、Dockerクライアントからの操作性が、コンテナ管理の煩雑さを隠蔽
‣ 速さ
環境構築・再現・操作性
‣ 環境の再現性
Docker イメージまたは Dockerfile を使うことで、同じ環境を再現できる
‣ 可搬性 ( portability )
Docker イメージは再利用可能・移動可能、共通カーネルであれば動作上の障壁が少ない
Dockerは何を実現してくれるのか?
24. 24SoftLayer と Bluemix 利用者のための Docker 入門
‣ 開発者はコードを書くだけでは無い
Docker イメージの管理や、コンテナ間の連携についても配慮が必要になる
‣ 既存の運用フローを変更する可能性
そもそも、そのフローは適切だったのか?
‣ 管理をどうするのか、どうすべきか
仮想サーバやクラウド環境以上に、コンテナを扱うことで指数関数的に管理対象が増加するので、
運用上の正常性評価や、セキュリティ上の課題(そもそも何がセキュリティなのか)の再検討が必要な場合がある
一方で新しい課題が出るのも事実
26. 26SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker とは
コンテナ技術を使い、アプリケーション開発・運搬・実行を行う
ための、プラットフォームである。
‣ プラットフォームの構成要素
• Docker Engine
• Docker Hub
• Docker Trusted Registry
• Kitematic
基本用語
• Docker Machine
• Docker Swarm
• Docker Compose
• Docker Toolbox
• Docker Content Trust
27. 27
‣ Docker Engine
• Dockerの中核となるプログラム
• コンテナの制御
‣ クライアント・サーバ型
• “docker” デーモン
• “docker” コマンドライン・ツール
30. docker daemon
( server )
docker
( client)
docker run <image>
Docker Hub
Docker Trusted Registry
Docker Registry
docker pull
31. レジストリ 説明
イメージ
管理
GUI 認証
リソース
表示
ログ TLS サポート 対象OS 料金
Docker Hub
インターネットから
誰もが利用可能
○ ○ ○ × × ○ △
5 private
repo
$7/月~
Docker Registry
自分で専用の
レジストリを準備
○ × × × × △ × -
Docker Trusted
Registry
自分で専用の
レジストリを準備。
○ ○
ユーザ認証
LDAP認証
○ ○ ○ ○
RHEL 7.0, 7.1
Ubuntu 14.04
LTS
1 Registry,
10 Engine
$150/月~
33. 33SoftLayer と Bluemix 利用者のための Docker 入門
‣ 利点
開発者にとっての効率の良さ
すぐに利用できる点と、バージョン・コントロール、CI/CDの自動化。
アプリケーションのポータビリティ
開発をはじめ、テストやリリースに至るまで、コンテナを通して一環したインフラ環境を利用できる。
‣ ポイント
Dockerそのものが何かするのではない(仮想化・クラウドと同じ)
– Dockerは、あくまでも、利用者の利便性を向上する道具
(プラットフォームの役割)
Docker Engine はインフラを抽象化--developer’s efficiency and application portability
34. 34SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker 動作環境の自動作成
仮想サーバの起動と Docker のプロビジョニングを自動的に行う
‣ コマンドラインで使うツール
docker-machine –d <ドライバ> [option] マシン名 …のように、コマンドで操作
‣ Linux, Windows, Mac OS X に対応
‣ VirtualBox だけでなく、多くのクラウドに対応
Amazon Web Services, DigitalOcean, exoscale, Google Compute Engine, SoftLayer, Azure, Hyper-V,
OpenStack, RackSpace, VMwareFusion, VMwarea vCloud Air, VMware vSphere, SSH 可能なリモートホスト
Docker Machine
37. $ docker-machine create ¥
--driver softlayer ¥
--softlayer-user ######## ¥
--softlayer-api-key ####### ¥
--softlayer-domain docker.jp ¥
--softlayer-region tok02 ¥
sl1
$ docker-machine ssh sl1
38. 38SoftLayer と Bluemix 利用者のための Docker 入門
Docker Swarm
‣ Docker クラスタ管理ツール
Docker ホストの集まりを作成したり、アクセスできるようにするツールで、API を持つ
‣ コマンドラインで操作
docker-machine で環境を作り、docker run swarm create
‣ クラスタ形成
ディスカバリ(マネージャへの登録に、consul や etcd にも対応)
フィルタ(コンテナを配置する条件の設定は、Docker を抽象化)
ストラテジ(どこのノードにコンテナを自動配置するか方針設定)
40. 40SoftLayer と Bluemix 利用者のための Docker 入門
Docker Compose
‣ 複数コンテナのアプリケーション自動設定
Dockerfile を複数のコンテナに拡張したようなイメージ
‣ コマンドラインで操作
docker-compose docker-compose.yml
‣ Linux, Windows, Mac OS X に対応
‣ 構成情報を YAML 形式のファイルで定義
41. docker-compose.yml
web:
build: .
command: php -S 0.0.0.0:8000 -t /wordpress
ports:
- "8000:8000"
links:
- db
volumes:
- .:/wordpress
db:
image: orchardup/mysql
environment:
MYSQL_DATABASE: wordpress
Dockerfile
FROM orchardup/php5
ADD . /wordpress
48. Application Development for IBM Connections with IBM Bluemix
http://www.slideshare.net/niklasheidloff/application-development-for-ibm-connections-with-ibm-bluemix-41052648/9
50. 50SoftLayer と Bluemix 利用者のための Docker 入門
IBM Containers
‣ Dockerコンテナを元に独自拡張
• 2014年12月4日 beta発表→2015年6月正式版として提供
‣ 機能と特徴
• コンテナを直接使うことができる(インフラの管理が不要)
• コンテナはパブリックとプライベートなネットワークを利用できる
• プライベートな Docker レジストリ
• そのほかの Bluemix のサービスとの統合
• Docker を元にした API やコマンド・ラインツール、互換性
53. docker daemon
( server )
docker
( client)
docker run <image>
Docker Hub
Docker Trusted Registry
Docker Registry
docker pull
54. IBM containers
( Bluemix endpoint )
"docker" or "cf ic"
( client)
docker run <image>
Private Registry
registry.ng.bluemix.net
docker pull
Bluemix GUI
docker push
cf login
cf ic login
Bluemix
監視
Bluemix認証
55. 55SoftLayer と Bluemix 利用者のための Docker 入門
ローカル環境との違い
‣ Bluemixの認証が必要
• cf login
• cf ic login
‣ プライベート・レポジトリが利用可能
• docker build で構築したイメージは、そのままリモートに保存
• docker push も利用可能
• 例:registry.ng.bluemix.net/zembutsu
57. 57SoftLayer と Bluemix 利用者のための Docker 入門
現時点の課題
‣ リージョンが2箇所
• 米国:ダラス(テキサス州)
• 英国:ロンドン
‣ まだ機能統合の途中
• Docker 1.6 相当、docker クライアントと cf クライアントの互換性
‣ ドキュメントが一部英語
59. 59SoftLayer と Bluemix 利用者のための Docker 入門
SoftLayer で Docker
‣ SoftLayer の環境を有効活用できる
• プライベート・ネットワーク
• 世界中とつながるバックボーン
• ベアメタル環境
‣ Docker 実行環境は自分で用意する必要
そのかわり、自由な構成ができる
• 例:パブリック側からアクセスができない Docker デーモン
• 例:パブリック側からアクセスできないレジストリ
60. 60SoftLayer と Bluemix 利用者のための Docker 入門
‣ 基本的に自由
Ubuntu 14.04 LTS が扱いやすい
‣ パッケージ版はバージョンが違うので注意
Ubuntu, Debian, CentOS, RHEL, Fedora
どの環境を使うべき?
apt-get install curl
curl -sSL https://get.docker.com/ | sh
61. 61SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker 実行環境をコマンドラインで構築
• 新しいホスト環境を作成し、docker も自動インストール
• IP アドレスやログイン情報を把握しなくても、リモート SSH 可能
• 作業が終わったら、コマンドで削除可能
‣ プライベート・レジストリの活用
• Docker イメージの保管場所をローカルにも持てる
• Object Storage 上へデータを保管する指定も可能
Docker Machine
62. $ docker-machine create ¥
--driver softlayer ¥
--softlayer-user ######## ¥
--softlayer-api-key ####### ¥
--softlayer-domain docker.jp ¥
--softlayer-region tok02 ¥
sl1
$ docker-machine ssh sl1
63. 63SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker Swarm
• コンテナのクラスタ管理
‣ Docker Compose
• 複数のコンテナ間連携を docker-compose.yml で定義
Dockerの他のツールとの連携