初心者が伝えるDocker超入門
@chichi1091
自己紹介
• Twitter:てっしー(@chichi1091)
• 地方の小さいSIer
• Java、PHP、C#が主な言語
• 家族構成(妻、長男、次男、三男、長
女)
講師とか言っていますがDockerはめちゃ
くちゃ初心者です(経験は1週間だけ)
間違いがあればツッコミよろしくです
Dockerとは?
Dockerとは?
• Docker社(旧dotCloud)が
PaaS事業で使っていた技術を
OSS化したもの
• アプリケーションを「コンテナ」
にパッケージングしてデプロイ、実行という
流れをコード化できる
• Dockerfileがあればいつでも同じものが再現で
きる
• Go言語で書かれている
この辺がコンテナっぽ
い
他の仮想化技術との違い
Hyperバイザーではなくコンテナ型の仮想化技術
<Hyperバイザー型>
• 仮想マシンを制御する
プログラムが必要
• ホストサーバ全体を
仮想化で利用
<コンテナ型>
• OSカーネルはホストOS
のものを共有
• 各コンテナはプロセスとして認識
• ホストマシンへの処理負荷が低い
VMWare esxi
ハードウェア
Hyper バイザー
VM VM
Bin/lib
s
Bin/lib
s
APP
APP
APP
APP
ハードウェア
OS
Bin/libs Bin/libs
APP
APP
APP
APP
Docker
Docker
コンテナ
結局コンテナってなに?
アプリ本体、必要なライブラリをパッケー
ジングしたもの(ゲストOSは含まない)
例:Wordpress+PHP+Apache+MySQL=コンテナ
Dockerのメリット・デメリッ
ト
<メリット>
• ホストOSのカーネルを直接使うためオーバーヘッド
が小さく高速
• イメージ(雛形)からコンテナ(実体)を作るため
同じ環境を簡単に複数作れる
<デメリット>
• 学習コストが高い(特にネットワーク関係)
• WindowsゲストOS非対応
Dockerやってみよう
Dockerやってみよう
CentOS上にDocker環境をインストール
1. Dockerパッケージをインストール
# yum install docker
2. bridge-utilsパッケージもインストール
# yum install bridge-utils
3. Dockerサービスの起動
# service docker start
Dockerイメージのダウンロー
ド
1. CentOSのDockerイメージを検索
# docker search centos
2. CentOSのDockerイメージをダウンロード
# docker pull centos
(最新版がダウンロードされる)
3. Dockerイメージを確認
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest eeb3a076a0be 3 days ago 196.7 MB
Dockerの実行
1. CentOSコンテナの実行
# docker run –i –t centos /bin/bash
・-i 標準入力有効
・-t 仮想端末あり
・-d バックグラウンド実行
・-e 環境変数を指定(ex:-e HOGE=“fuga”)
・-v ホストマシンにマウント(ex:-v /data/logs:/var/log)
2. コンテナの確認
# docker ps –a
・-a 終了済みも含む
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
259b7789591c centos:latest "/bin/bash" 25 seconds ago
berserk_davinci
その他便利なコマンド
• コンテナの停止/再実行/一時停止
# docker stop/start/pause
• コンテナに接続
# docker attach
• 終了済みコンテナの削除
# docker rm <CONTAINER>
• イメージの削除
# docker rmi <IMAGE>
• コンテナのイメージ化
# docker commit <CONTAINER> <IMAGE>
• コンテナ情報の表示
# docker inspect
Dockerfile
Dockerfile
Dockerfileってなに?
• Dockerコンテナの構成内容をまとめて記述す
るテキスト型式のファイル
• 1行につき1命令を「{命令} {引数}」で
記述する
• 「docker build」コマンドで順次実行される
Dockerfileに書ける命令
命令 内容
FROM 元になるイメージ
MAINTAINE
R
Dockerfileの作成者
RUN コマンドの実行
ADD ファイル、ディレクトリの追加
CMD コンテナの実行コマンド(docker runで上書き
可)
ENTRYPOIN
T
コンテナの実行コマンド(docker runで上書き
不可)
WORKDIR 作業ディレクトリの指定
ENV 環境変数の設定
USER 実行ユーザの設定
EXPOSE ポートの指定
VOLUME マウント
Dockerfileの例
ENTRYPOINTでhttpdの起動を指定しているのでdocker run時にコマンド指定が不
要
FROM centos:latest
MAINTAINER cterash<cterash@jops.co.jp>
RUN yum install httpd –y
ENTRYPOINT /usr/sbin/httpd –D FOREGROUND
• Dockerfileの作成
• イメージの作成
# docker build –t <IMAGE_NAME> ./Dockerfile
• コンテナの作成
# docker run –i –t <IMAGE_NAME>
Docker活用事例
他力本願でごめんなさい
Docker活用事例
Jenkins + Pipeline Plugin + Docker
Jenkins上でDockerを使う
方法をまとめたスライド
Docker上で実施したテストを
Jenkinsで参照することが
紹介されています
Docker活用事例
LIGでのDocker活用
LIGの自社案件でのDocker事例
を紹介したスライド
マイクロサービス化などいまどき
っぽい環境です
余談
先月LIG社の勉強会「づや会」に参加しました
とってもおしゃれなオフィスでした
Docker活用事例
Docker を使った開発環境構築事例
モバイルゲームサービス
の開発環境をDocker化
した事例
Windows上でDockerを
利用する方法などが記載されています
まとめ
まとめ
• サーバリソースを抑えつつ仮想化が可能!
• インフラもコード化できてみんな同じ環境で
作業できる!(俺の環境では動いたとはもう言わせない)
• ぶっ壊れてもすぐ復元できる!
• でも学習コストが高い(運用でDockerを使い出すとノ
ウハウがないとつらい)
• 開発環境やCIと相性がとってもよさそう!
• 「Dockerで提供します」とか言えたらなんか
カッコいい!
• DockerHubとかはまたの機会で( TДT)ゴメンヨー
ご清聴ありがとうございました

初心者が伝えるDocker超入門