【社内勉強会】Docker入門

20

Click here to load reader

Transcript of 【社内勉強会】Docker入門

Page 1: 【社内勉強会】Docker入門

+

Docker 入門

Kazuki murahama

Page 2: 【社内勉強会】Docker入門

+Docker とは

Page 3: 【社内勉強会】Docker入門

+Docker とは

Docker はソフトウェアコンテナ内のアプリケーションのデプロイメントを自動化するオープンソースソフトウェアである。

Version 0.9 より前は、 LXC と呼ばれる Linux コンテナ技術を利用していたが、現在では libcontainer という独自のライブラリでコンテナ仮想技術を提供している。

Dockerfile と呼ばれる設定ファイルからコンテナイメージファイルを作成可能という特性を持つ。

Page 4: 【社内勉強会】Docker入門

+コンテナとは

軽量な仮想化

各種コンテナ技術 LXC OpenVZ Virtuozzo libvirt Docker

Page 5: 【社内勉強会】Docker入門

+なぜ Docker か

こういうことありませんか サーバー環境変数が違う PHP, MySQL, Apache のバージョンが違う

Page 6: 【社内勉強会】Docker入門

+なぜ Docker か

Immutable Inflastracture の実現 Immutable とは“変更不可”( mutable の否定) コンテナをまるごと商用に持っていくことができるので、一度動け

ば、絶対に動く。 Chef などの構成管理ツールでも問題解決できるのでは?

直接商用のサーバーの設定を書き換える必要がある。きちんと構成管理できていれば問題ないが、動かなくなる可能性も少なからずある。

ハイパーバイザ型の仮想イメージでは? スナップショットやイメージのコミットはできるが、重い。

Page 7: 【社内勉強会】Docker入門

+Docker のメリット

軽量 コンテナを起動するのに必要な CPU とメモリのオーバーヘッドが

少ない ゲスト OS がなく、 kernel を共有 container 新規作成も速い。( Image との差分で管理されるから。 ハイパーバイザな仮想マシンのような OS の起動が不要だから。

バックアップが容易 軽量であるため、一瞬で終わる

Page 8: 【社内勉強会】Docker入門

+Docker のメリット

リソースの制限ができる Cgroups

プロセスグループのリソース (CPU 、メモリ、ディスク I/O など )の利用を制限・隔離する Linux カーネルの機能を用い、リソース管理が行える

アプリケーションの疎結合 Web と DB を別の container に分けて運用できる

アンインストールの手軽さ 不要なコンテナを停止するのは linux プロセスを kill(stop) するの

と同じ感覚 remove も手軽

Page 9: 【社内勉強会】Docker入門

+ホスト OS 型 , ハイパーバイザ型仮想化との比較図示

Hardware HardwareHardware

OS

仮想化基板

OSOS

process

process process

Hypervisor

OSOS

process process

OS

process

OS

processcontaine

r

processcontaine

r

processcontaine

r

Docker Engine

ホスト OS 型(スーパーバイザ)

ハイパーバイザ型 コンテナ型

Page 10: 【社内勉強会】Docker入門

+Docker の使い方

Page 11: 【社内勉強会】Docker入門

+Docker 対応ディストリビューション

Mac OS X

Ubuntu

Red Hat Enterprise Linux

CentOS

Debian

Gentoo

Google Cloud Platform

Rackspace Cloud

Page 12: 【社内勉強会】Docker入門

+Docker 対応ディストリビューション

Amazon EC2

IBM Softlayer

Arch Linux

FrugalWare

Fedora

openSUSE

CRUX Linux

Microsoft Windows

Binaries

Page 13: 【社内勉強会】Docker入門

+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" となっている )

Page 14: 【社内勉強会】Docker入門

+Docker の作業の流れ

Docker hub

Hardware

OS

processcontaine

r

DockerImage

processcontaine

r

Docker Engine

Hardware

OS

processcontaine

r

processcontaine

r

DockerImage

Docker Engine

Page 15: 【社内勉強会】Docker入門

+Demo

Docker コンテナイメージを検索する

Docker コンテナイメージを取得する

Docker コンテナを実行

Docker コンテナを停止

Docker コンテナを実行、ターミナルを接続する

Docker コンテナを Docker コンテナイメージへ

Web サーバーを立ち上げる

Page 16: 【社内勉強会】Docker入門

+Docker を扱う上での問題点

データの持ち方 Database やコンテンツファイルの永続化がキー。

ログの管理

デプロイ方法の模索 商用で使うとなると、手順をしっかり考えないと事故りそう

コンテナやイメージの管理 ほいほいコンテナが作れてしまう分、しっかりタグ付けとかしたい。

デザインパターンが必要ですね。

Page 17: 【社内勉強会】Docker入門

+その他

Page 18: 【社内勉強会】Docker入門

+Docker 1.0 公開

Docker Engine LXC を wrap していたが、独自でコンテナライブラリ作成。

「エンタープライズでの活用に耐え得るものになった」

コミュニティサポートだけでなく、商用サポートも

Docker hub の登場( image を手軽に共有)

Page 19: 【社内勉強会】Docker入門

+Chef,puppet,Ansible などの構成管理ツールとの連携 Dockerfile だけではテストなど辛い部分や、既存の Recipe を

使いたい場合もあるので、構成管理ツールとの連携もあり。

image の作成は構成管理ツールで作成すると差分が測りやすいのでより良い。

ただし、サーバーに Install の要らない Ansible が適しているかも。

Page 20: 【社内勉強会】Docker入門

+まとめ

Immutable Infrastracture の時代に突入している(今さらながら再認識

一つの物理サーバーでできることが増えました たとえば Web サーバーたくさん立てれる

DevOps の一つの大きな武器 手元でコンテナが動いた→じゃあリリース問題なし! アプリケーションエンジニアはコンテナを作り、

インフラエンジニアはコンテナが載る母艦を守ればいいという役割分担も可能か。