Upload
softlayerjp
View
4.334
Download
0
Embed Size (px)
Citation preview
Dockerと愉快な仲間たちS o ft L aye r と B l u e m i x 利 用 者 の た め の D o c ke r 入 門
SoftLayer Bluemix Summit 2015 #slbm15
2015年9月2日(水)
@zembutsu
背景画像CREDIT:スフィア / PIXTA(ピクスタ)https://pixta.jp/@sphere
2
今日の内容DockerとSoftLayerとBluemixと
‣ Dockerの考え方と概要なぜ「Docker」や「コンテナ」なのか? これまでと何が違うのか?
‣ Docker on BlueMixBluemix を使って、どのようなことが出来るのか。単純な Docker とは何が違うのか?
‣ Docker on SoftLayerBluemix との違い。SoftLayer を活用した Docker の使い方。
3
今日のまとめ1今日から始めるDocker
‣ Dockerの考え方と概要
速さと利便性
Docker はコンテナではなくプラットフォーム
既存システムと対立するものではなく、価値を生み出すもの
‣ 既存システムとの共存
Bluemix は Docker 互換の IBM Containers
SoftLayer は Docker 環境を便利に活用できる
4
今日のまとめ2今日から始めるDocker
‣ Dockerありきで考えると全てが破綻する
何のために導入するのか?
既存システムとは対立するものではない
‣ 現実的な課題
多くの場合、業務フローの変更を伴うことが予想される
Docker イメージ管理 ( DockerHub, DTR, Private Registry )
運用(監視、性能評価、セキュリティ、ネットワーク)
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
┌──────────────────────┐│ドッカースウォームが あらわれた! │ │ドッカーコンポーズが あらわれた! ││コマンド? ││ ∨ │└━━━━━━━━━━━━━━━━━━━━━━┘
┌────┐│ていじで ││かえろう │└━━━━┘
┌──────コマンド─────┐│ たたかう じゅもん ││ にげる げんじつとうひ │└━━━━━━━━━━━━━━━┘
>
素材画像CREDIT:hanako / PIXTA(ピクスタ)https://pixta.jp/illustration/14575501
TMTOWTDIThere’s More Than One Way To Do It
はじめに:Dockerの考え方と概要
1■□□ Introduction – why docker?
S o f t L a y e r と B l u e m i x 利 用 者 の た め の D o c k e r 入 門
VS仮想化システム
構成管理ツール
クラウド環境
システム基盤の変遷と課題
物理時代
仮想化・クラウド時代
コンテナ時代
機材発注
機材納品
設置
機器設定
事前設計
クリック
見積もり
OS設定
環境構築
試験
利用開始
試験
開発
試験
運用
利用開始
…
…
事前設計
クリック
試験
利用開始
…
事前設計
クリック
試験
利用開始
…
開 発 段 階 検 証 段 階 本 番 段 階
すべてを迅速に、一貫した環境で行いやすい← New
社外開発環境 本番環境ステージング環境
社内共有開発環境
個人開発環境
社内テスト環境
社外開発環境 本番環境ステージング環境
CI/CD Docker レジストリ
Docker動作環境(docker machine)
18SoftLayer と Bluemix 利用者のための Docker 入門
発生する課題
‣ 環境の差異による動く・動かない、及び検証コスト開発・テスト環境・本番環境におけるライブラリやコマンドの有無、バージョンの差違、環境依存問題
‣ 構築済みの環境を、拡大・縮小しづらいアプリケーションの動作環境と、システム基盤の管理を別々のチームや部署が行っている場合
‣ 複雑化する管理各チームや部署が統一性の無い"セルフ標準"を持っているため、作業標準化の壁
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 イメージ化して対応 )
対策はあるのだろうか?
引用Docker 0.9: introducing execution drivers and libcontainer | Docker Bloghttps://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
引用:What is Docker?https://www.docker.com/whatisdocker
22SoftLayer と Bluemix 利用者のための Docker 入門
‣ コンテナとは、ホストOS上のKernel機能を使い
複数のルート・ファイルシステムを実行できる。各々の root ファイルシステムの事を「コンテナ」( container ) と呼称する。
これ何て chroot?と言われる所以。
‣ 各々のコンテナは各々のリソースを持つプロセス(計算資源)
メモリ
デバイス
ネットワーク
Dockerとコンテナ
23SoftLayer と Bluemix 利用者のための Docker 入門
‣ 操作の分かりやすさ、使いやすさLXC を直接管理するよりも、Dockerクライアントからの操作性が、コンテナ管理の煩雑さを隠蔽
‣ 速さ環境構築・再現・操作性
‣ 環境の再現性Docker イメージまたは Dockerfile を使うことで、同じ環境を再現できる
‣ 可搬性 ( portability )Docker イメージは再利用可能・移動可能、共通カーネルであれば動作上の障壁が少ない
Dockerは何を実現してくれるのか?
24SoftLayer と Bluemix 利用者のための Docker 入門
‣ 開発者はコードを書くだけでは無いDocker イメージの管理や、コンテナ間の連携についても配慮が必要になる
‣ 既存の運用フローを変更する可能性そもそも、そのフローは適切だったのか?
‣ 管理をどうするのか、どうすべきか仮想サーバやクラウド環境以上に、コンテナを扱うことで指数関数的に管理対象が増加するので、
運用上の正常性評価や、セキュリティ上の課題(そもそも何がセキュリティなのか)の再検討が必要な場合がある
一方で新しい課題が出るのも事実
Dokcerの概念と基本用語
26SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker とは
コンテナ技術を使い、アプリケーション開発・運搬・実行を行う
ための、プラットフォームである。
‣ プラットフォームの構成要素• Docker Engine
• Docker Hub
• Docker Trusted Registry
• Kitematic
基本用語
• Docker Machine
• Docker Swarm
• Docker Compose
• Docker Toolbox
• Docker Content Trust
27
‣ Docker Engine
• Dockerの中核となるプログラム
• コンテナの制御
‣ クライアント・サーバ型
• “docker” デーモン
• “docker” コマンドライン・ツール
28
dockerクライアントの基本コマンド
docker run
コンテナ実行
docker stop
コンテナ停止
docker commit
コンテナイメージ化
docker pull
イメージの取得
docker build
イメージの自動構築
docker attach
コンテナにアタッチ
docker logs
標準出力の表示
docker inspect
詳細情報の表示
docker rm
イメージ削除
docker images
イメージ一覧表示
diff | history
差分・履歴表示
DockerHub (公開レジストリ)https://hub.docker.com/
レポジトリの「イメージ」を共有するシステム様々なアプリケーションやミドルウェアのレポジトリ
docker daemon( server )
docker( client)
docker run <image>
Docker HubDocker Trusted Registry
Docker Registry
docker pull
レジストリ 説明イメージ管理
GUI 認証リソース表示
ログ TLS サポート 対象OS 料金
Docker Hubインターネットから誰もが利用可能
○ ○ ○ × × ○ △5 private repo$7/月~
Docker Registry自分で専用のレジストリを準備
○ × × × × △ × -
Docker Trusted Registry
自分で専用のレジストリを準備。
○ ○ユーザ認証LDAP認証
○ ○ ○ ○RHEL 7.0, 7.1Ubuntu 14.04 LTS
1 Registry, 10 Engine$150/月~
kernel
ベース・イメージ(CentOS)
ベース・イメージ(Ubuntu)
変更内容 A
変更内容 B
変更内容 C
書き込み可能領域
書き込み可能領域
33SoftLayer と Bluemix 利用者のための Docker 入門
‣ 利点
開発者にとっての効率の良さすぐに利用できる点と、バージョン・コントロール、CI/CDの自動化。
アプリケーションのポータビリティ開発をはじめ、テストやリリースに至るまで、コンテナを通して一環したインフラ環境を利用できる。
‣ ポイント
Dockerそのものが何かするのではない(仮想化・クラウドと同じ)
– Dockerは、あくまでも、利用者の利便性を向上する道具
(プラットフォームの役割)
Docker Engine はインフラを抽象化--developer’s efficiency and application portability
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
$ docker-machine create ¥--driver softlayer ¥--softlayer-user ######## ¥--softlayer-api-key ####### ¥--softlayer-domain docker.jp ¥--softlayer-region tok02 ¥sl1
$ docker-machine ssh sl1
38SoftLayer と Bluemix 利用者のための Docker 入門
Docker Swarm
‣ Docker クラスタ管理ツールDocker ホストの集まりを作成したり、アクセスできるようにするツールで、API を持つ
‣ コマンドラインで操作docker-machine で環境を作り、docker run swarm create
‣ クラスタ形成
ディスカバリ(マネージャへの登録に、consul や etcd にも対応)
フィルタ(コンテナを配置する条件の設定は、Docker を抽象化)
ストラテジ(どこのノードにコンテナを自動配置するか方針設定)
VM
Docker
SwarmManager
Dokku, Docker Compose, Krane, Jenkins, Apache Mesos …
VM
Docker
VM
Docker
VM
Docker
…
コンテナ コンテナ コンテナ コンテナ
40SoftLayer と Bluemix 利用者のための Docker 入門
Docker Compose
‣ 複数コンテナのアプリケーション自動設定Dockerfile を複数のコンテナに拡張したようなイメージ
‣ コマンドラインで操作docker-compose docker-compose.yml
‣ Linux, Windows, Mac OS X に対応
‣ 構成情報を YAML 形式のファイルで定義
docker-compose.yml
web:build: .command: php -S 0.0.0.0:8000 -t /wordpressports:
- "8000:8000"links:
- dbvolumes:
- .:/wordpressdb:
image: orchardup/mysqlenvironment:
MYSQL_DATABASE: wordpress
Dockerfile
FROM orchardup/php5ADD . /wordpress
TMTOWTDIThere’s More Than One Way To Do It
VS
仮想化システム
構成管理ツール
クラウド環境
背景画像CREDIT:rvika/ PIXTA(ピクスタ)https://pixta.jp/@prof261092
背景画像CREDIT:rvika/ PIXTA(ピクスタ)https://pixta.jp/@prof261092
1. 今すぐ始めなくてはいけない
2. すべての環境をコンテナにしなくてはいけない
3. 仮想化システムは不要になる
4. 構成管理ツール(Chef,Puppet,Ansible等)は不要になる
5. クラウド環境は不要になる
6. Dockerやコンテナが全てを解決してくれる
7. Dockerは難しい
8. 本番環境では使えない
9. セキュリティや信頼性に問題がある
10. Dockerは冗長化できない
背景画像CREDIT:rvika/ PIXTA(ピクスタ)https://pixta.jp/@prof261092
11. ネットワークが貧弱だ
12. よく落ちる
13. 商用サポートを受けられない
14. Docker ではなく CoreOS を使うべきだ
15. データの可用性が貧弱
16. Docker があればコスト削減できる
17. Docker は kubernetes がないと意味が無い
18. Docker やコンテナを使うとベンダーロックインされる
19. Docker であれば業務効率化できる
20. そもそも、Docker を使う意味が無い
47
dockerクライアントの基本コマンド
docker run
コンテナ実行
docker stop
コンテナ停止
docker commit
コンテナイメージ化
docker pull
イメージの取得
docker build
イメージの自動構築
docker attach
コンテナにアタッチ
docker logs
標準出力の表示
docker inspect
詳細情報の表示
docker rm
イメージ削除
docker images
イメージ一覧表示
diff | history
差分・履歴表示
Application Development for IBM Connections with IBM Bluemixhttp://www.slideshare.net/niklasheidloff/application-development-for-ibm-connections-with-ibm-bluemix-41052648/9
Docker on Bluemix
2■■□
50SoftLayer と Bluemix 利用者のための Docker 入門
IBM Containers
‣ Dockerコンテナを元に独自拡張
• 2014年12月4日 beta発表→2015年6月正式版として提供
‣ 機能と特徴
• コンテナを直接使うことができる(インフラの管理が不要)
• コンテナはパブリックとプライベートなネットワークを利用できる
• プライベートな Docker レジストリ
• そのほかの Bluemix のサービスとの統合
• Docker を元にした API やコマンド・ラインツール、互換性
docker daemon( server )
docker( client)
docker run <image>
Docker HubDocker Trusted Registry
Docker Registry
docker pull
IBM containers( Bluemix endpoint )
"docker" or "cf ic"( client)
docker run <image>
Private Registryregistry.ng.bluemix.net
docker pull
Bluemix GUI
docker push
cf logincf ic login
Bluemix
監視
Bluemix認証
55SoftLayer と Bluemix 利用者のための Docker 入門
ローカル環境との違い
‣ Bluemixの認証が必要
• cf login
• cf ic login
‣ プライベート・レポジトリが利用可能
• docker build で構築したイメージは、そのままリモートに保存
• docker push も利用可能
• 例:registry.ng.bluemix.net/zembutsu
export DOCKER_HOST=tcp://containers-api.ng.bluemix.net:8443export DOCKER_CERT_PATH=/zembutsu/.ice/certsexport DOCKER_TLS_VERIFY=1
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESfd3574fd-204 registry.ng.bluemix.net/zembutsu/bluemixapp1:0.1 "bash " 22 seconds ago Running 14 seconds ago sharp_engelbart14ef7bc3-478 registry.ng.bluemix.net/zembutsu/bluemixapp1:0.1 "bash " About a minute ago Running 57 seconds ago modest_brown
$ cf ic run registry.ng.bluemix.net/zembutsu/bluemixapp1:0.1fd3574fd-2049-49d2-9b10-c6d585bcf098
57SoftLayer と Bluemix 利用者のための Docker 入門
現時点の課題
‣ リージョンが2箇所
• 米国:ダラス(テキサス州)
• 英国:ロンドン
‣ まだ機能統合の途中
• Docker 1.6 相当、docker クライアントと cf クライアントの互換性
‣ ドキュメントが一部英語
Docker on SoftLayer
3■■□
59SoftLayer と Bluemix 利用者のための Docker 入門
SoftLayer で Docker
‣ SoftLayer の環境を有効活用できる
• プライベート・ネットワーク
• 世界中とつながるバックボーン
• ベアメタル環境
‣ Docker 実行環境は自分で用意する必要
そのかわり、自由な構成ができる
• 例:パブリック側からアクセスができない Docker デーモン
• 例:パブリック側からアクセスできないレジストリ
60SoftLayer と Bluemix 利用者のための Docker 入門
‣ 基本的に自由
Ubuntu 14.04 LTS が扱いやすい
‣ パッケージ版はバージョンが違うので注意
Ubuntu, Debian, CentOS, RHEL, Fedora
どの環境を使うべき?
apt-get install curlcurl -sSL https://get.docker.com/ | sh
61SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker 実行環境をコマンドラインで構築
• 新しいホスト環境を作成し、docker も自動インストール
• IP アドレスやログイン情報を把握しなくても、リモート SSH 可能
• 作業が終わったら、コマンドで削除可能
‣ プライベート・レジストリの活用
• Docker イメージの保管場所をローカルにも持てる
• Object Storage 上へデータを保管する指定も可能
Docker Machine
$ docker-machine create ¥--driver softlayer ¥--softlayer-user ######## ¥--softlayer-api-key ####### ¥--softlayer-domain docker.jp ¥--softlayer-region tok02 ¥sl1
$ docker-machine ssh sl1
63SoftLayer と Bluemix 利用者のための Docker 入門
‣ Docker Swarm
• コンテナのクラスタ管理
‣ Docker Compose
• 複数のコンテナ間連携を docker-compose.yml で定義
Dockerの他のツールとの連携
今日のまとめWrap up
65
今日のまとめ1今日から始めるDocker
‣ Dockerの考え方と概要
速さと利便性
Docker はコンテナではなくプラットフォーム
既存システムと対立するものではなく、価値を生み出すもの
‣ 既存システムとの共存
Bluemix は Docker 互換の IBM Containers
SoftLayer は Docker 環境を便利に活用できる
66
今日のまとめ2今日から始めるDocker
‣ Dockerありきで考えると全てが破綻する
何のために導入するのか?
既存システムとは対立するものではない
‣ 現実的な課題はあるが "皆さん" と乗り越えたい
多くの場合、業務フローの変更を伴うことが予想される
Docker イメージ管理 ( DockerHub, DTR, Private Registry )
運用(監視、性能評価、セキュリティ、ネットワーク)
TMTOWTDIThere’s More Than One Way To Do It
68
何か気になることはありますか?
69
‣ Docker ドキュメント
http://docs.docker.com/
‣ Docker ドキュメントの日本語訳(仮)
http://qiita.com/zembutsu/items/444396b76e0db2c04c2b
(まとめて、どっかに整理するつもりです。)
参考情報