狠狠撸

狠狠撸Share a Scribd company logo
初心者が伝えるDocker超入門
@chichi1091
自己紹介
? Twitter:てっしー(@chichi1091)
? 地方の小さいSIer
? Java、PHP、C#が主な言語
? 家族構成(妻、長男、次男、三男、長
女)
講師とか言っていますがDockerはめちゃ
くちゃ初心者です(経験は1週間だけ)
間違いがあればツッコミよろしくです
顿辞肠办别谤とは?
顿辞肠办别谤とは?
? 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非対応
顿辞肠办别谤やってみよう
顿辞肠办别谤やってみよう
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)??????
ご清聴ありがとうございました

More Related Content

初心者か?伝える顿辞肠办别谤超入门