【社内勉強会】Docker入門
Click here to load reader
-
Upload
kazuki-murahama -
Category
Documents
-
view
5.012 -
download
3
Transcript of 【社内勉強会】Docker入門
+
Docker 入門
Kazuki murahama
+Docker とは
+Docker とは
Docker はソフトウェアコンテナ内のアプリケーションのデプロイメントを自動化するオープンソースソフトウェアである。
Version 0.9 より前は、 LXC と呼ばれる Linux コンテナ技術を利用していたが、現在では libcontainer という独自のライブラリでコンテナ仮想技術を提供している。
Dockerfile と呼ばれる設定ファイルからコンテナイメージファイルを作成可能という特性を持つ。
+コンテナとは
軽量な仮想化
各種コンテナ技術 LXC OpenVZ Virtuozzo libvirt Docker
+なぜ Docker か
こういうことありませんか サーバー環境変数が違う PHP, MySQL, Apache のバージョンが違う
+なぜ Docker か
Immutable Inflastracture の実現 Immutable とは“変更不可”( mutable の否定) コンテナをまるごと商用に持っていくことができるので、一度動け
ば、絶対に動く。 Chef などの構成管理ツールでも問題解決できるのでは?
直接商用のサーバーの設定を書き換える必要がある。きちんと構成管理できていれば問題ないが、動かなくなる可能性も少なからずある。
ハイパーバイザ型の仮想イメージでは? スナップショットやイメージのコミットはできるが、重い。
+Docker のメリット
軽量 コンテナを起動するのに必要な CPU とメモリのオーバーヘッドが
少ない ゲスト OS がなく、 kernel を共有 container 新規作成も速い。( Image との差分で管理されるから。 ハイパーバイザな仮想マシンのような OS の起動が不要だから。
バックアップが容易 軽量であるため、一瞬で終わる
+Docker のメリット
リソースの制限ができる Cgroups
プロセスグループのリソース (CPU 、メモリ、ディスク I/O など )の利用を制限・隔離する Linux カーネルの機能を用い、リソース管理が行える
アプリケーションの疎結合 Web と DB を別の container に分けて運用できる
アンインストールの手軽さ 不要なコンテナを停止するのは linux プロセスを kill(stop) するの
と同じ感覚 remove も手軽
+ホスト OS 型 , ハイパーバイザ型仮想化との比較図示
Hardware HardwareHardware
OS
仮想化基板
OSOS
process
process process
Hypervisor
OSOS
process process
OS
process
OS
processcontaine
r
processcontaine
r
processcontaine
r
Docker Engine
ホスト OS 型(スーパーバイザ)
ハイパーバイザ型 コンテナ型
+Docker の使い方
+Docker 対応ディストリビューション
Mac OS X
Ubuntu
Red Hat Enterprise Linux
CentOS
Debian
Gentoo
Google Cloud Platform
Rackspace Cloud
+Docker 対応ディストリビューション
Amazon EC2
IBM Softlayer
Arch Linux
FrugalWare
Fedora
openSUSE
CRUX Linux
Microsoft Windows
Binaries
+Docker のインストール
Ubuntu でのインストール例。 $ sudo apt-get update # パッケージのリストを取得 $ sudo apt-get install docker.io # docker インストール $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker # リン
クを張る (ubuntu は都合上 "docker.io" となっている )
+Docker の作業の流れ
Docker hub
Hardware
OS
processcontaine
r
DockerImage
processcontaine
r
Docker Engine
Hardware
OS
processcontaine
r
processcontaine
r
DockerImage
Docker Engine
+Demo
Docker コンテナイメージを検索する
Docker コンテナイメージを取得する
Docker コンテナを実行
Docker コンテナを停止
Docker コンテナを実行、ターミナルを接続する
Docker コンテナを Docker コンテナイメージへ
Web サーバーを立ち上げる
+Docker を扱う上での問題点
データの持ち方 Database やコンテンツファイルの永続化がキー。
ログの管理
デプロイ方法の模索 商用で使うとなると、手順をしっかり考えないと事故りそう
コンテナやイメージの管理 ほいほいコンテナが作れてしまう分、しっかりタグ付けとかしたい。
デザインパターンが必要ですね。
+その他
+Docker 1.0 公開
Docker Engine LXC を wrap していたが、独自でコンテナライブラリ作成。
「エンタープライズでの活用に耐え得るものになった」
コミュニティサポートだけでなく、商用サポートも
Docker hub の登場( image を手軽に共有)
+Chef,puppet,Ansible などの構成管理ツールとの連携 Dockerfile だけではテストなど辛い部分や、既存の Recipe を
使いたい場合もあるので、構成管理ツールとの連携もあり。
image の作成は構成管理ツールで作成すると差分が測りやすいのでより良い。
ただし、サーバーに Install の要らない Ansible が適しているかも。
+まとめ
Immutable Infrastracture の時代に突入している(今さらながら再認識
一つの物理サーバーでできることが増えました たとえば Web サーバーたくさん立てれる
DevOps の一つの大きな武器 手元でコンテナが動いた→じゃあリリース問題なし! アプリケーションエンジニアはコンテナを作り、
インフラエンジニアはコンテナが載る母艦を守ればいいという役割分担も可能か。