$30 off During Our Annual Pro Sale. View Details »

「はじめて触るDocker入門」

 「はじめて触るDocker入門」

Gunma.web #26 の講演資料です。
各種コマンドについての補足資料は下記URLをご覧下さい。
http://qiita.com/Wslash/items/941697bf0fcd3213e7dd

横田真俊(wslash)

January 20, 2017
Tweet

More Decks by 横田真俊(wslash)

Other Decks in Technology

Transcript

  1. エバンジェリストチーム 横田真俊(@Wslash)
    さくらインターネット株式会社
    初心者向けDockerデモ ~ Gunma.web版 ~
    はじめて触る
    Docker入門
    2017/01/21

    View Slide

  2. 自己紹介
    氏名
    横田真俊(@Wslash)
    「さくらのインターネット」の
    エバンジェリスト 兼 さくらのクラウド企画担当です。
    年に50回ほどのセミナーやハンズオンなどを担当しています。
    出身高校は高崎北高校、出身中学は中尾中です。
    2

    View Slide

  3. 他にもこんな本を書いております
    インフラエンジニア向けの
    本も書きました。
    3

    View Slide

  4. 商 号 さくらインターネット株式会社
    本 社 所 在 地 大阪市中央区南本町一丁目8番14号
    設 立 年 月 日
    1999年8月17日
    (サービス開始は1996年12月23日)
    上 場 年 月 日
    2005年10月12日(マザーズ)
    2015年11月27日(東証一部へ市場変更)
    資 本 金 8億9,530万円
    従 業 員 数 361名(連結)
    (※2016年6月末日現在)
    会社プロフィール
    会社概要
    インターネットインフラの提供を事業ドメインとして、
    大阪、東京、北海道の3都市に5つのデータセンターを展開
    1996年12月に現社長の田中邦裕が、
    舞鶴高専在学中に学内ベンチャーとして創業。
    1999年8月に株式会社を設立。10月には、第1号
    となるデータセンターを大阪市中央区に開設。
    2005年10月に東京証券取引所
    マザーズ市場に上場。
    2011年11月、北海道石狩市に国内最大級の
    郊外型大規模データセンターを開設。
    石狩データセンター開設
    2011
    東証マザーズ上場
    2005
    1996
    1999 ・株式会社を設立
    2015年11月に東京証券取引所
    市場第一部に市場変更。
    東証一部に市場変更
    2015
    さくらインターネット創業
    ・最初のデータセンター開設
    5

    View Slide

  5. (C) Copyright 1996-2017 SAKURA Internet Inc 5

    View Slide

  6. 既存サービスの売り上げ比率
    6

    View Slide

  7. ここ5年で「VPS・クラウド」が売り上げ比率1位に
    7

    View Slide

  8. 直近のさくらインターネットのトピック
    8

    View Slide

  9. 「さくらのレンタルサーバ」12周年で契約件数が40万件を突破
    9

    View Slide

  10. さくらのレンタルサーバでグループウェア提供(β)
    10

    View Slide

  11. 11

    View Slide

  12. すべてを自社でやるのは
    現実的でしょうか?
    ネットワークとデータをやり取りしたいだけなのに、
    やらなければならないことが多すぎる
    通 信 ネ ッ ト ワ ー ク D B ミ ド ル A P I

    View Slide

  13. 2017/1/21 (C) Copyright 1996-2016 SAKURA Internet Inc 13
    既存の事業領域/スキルセットの大幅な変更なく
    モノ/サービスづくり、連携に注力可能
    さくらのIoT Platformが
    実現したいこと
    通信⇔データ連携
    隠蔽

    View Slide

  14. 2017/1/21 (C) Copyright 1996-2017 SAKURA Internet Inc 14
    さくらインターネット
    世の中の
    IoT プラットフォーム
    企画・アイディア
    モノ(製造)
    センサー
    データの送信手段
    安全な通信経路
    プラットフォーム
    (基本機能)
    管理UI
    連携API
    「データを迎えに行く」という発想
    モノに組み込めば、電源を入れるだけで利用可能
    接続知識や現地の有線/無線LAN環境も不要
    さくらのIoT Platform の特徴

    View Slide

  15. 2017/1/21 (C) Copyright 1996-2017 SAKURA Internet Inc 15
    単体方式:SCM-LTE-beta
    定価
    9,960

    100万回プラットフォームとデータ送受信可能な
    ポイント※付き
    RP=RelationPoint
    さくらのIoTプラットフォーム利用時に消費されるポイント
    1分間に1つデータ(RM)をプラットフォームとやり取りすると
    約2年間利用することが可能
    さくらの通信モジュール

    View Slide

  16. 2017/1/21 (C) Copyright 1996-2017 SAKURA Internet Inc 16
    定価8,000円
    ブレイクアウトボード(検証ボード)
    SCO-BB-01
    定価
    5,000円
    Aruduinoシールドボード
    SCO-ARD-01
    さくらの通信モジュールオプション

    View Slide

  17. 2017/1/21 (C) Copyright 1996-2016 SAKURA Internet Inc 17
    β提供記念
    キャンペーン

    View Slide

  18. 2017/1/21 (C) Copyright 1996-2016 SAKURA Internet Inc
    4,980円
    単体方式
    SCM-LTE-beta
    2,500円
    4,000円
    Aruduino
    シールドボード
    SCO-ARD-01
    9,960円
    5,000円
    8,000円
    さくらの通信モジュール及びオプション


    100万回プラットフォームと
    データ送受信可能なポイント※付き
    88
    ブレイクアウトボード
    (検証ボード)
    SCO-BB-01

    View Slide

  19. Dockerとは何か?
    19

    View Slide

  20. 2

    View Slide

  21. 2
    「コンテナ」と仮想化の違い

    View Slide

  22. 今までの仮想化(1) 「ホストOS仮想型」
    22
    ホストOSの上で「仮想化ソフト」を動かすタイプ
    ホストOSとアプリを共存できるのでPCからの個人利用の形
    で多いが、ホストの負荷が大きい
    ホスト形仮想化ソフト
    (VirtualBOXなど)
    OS (1) OS(2) OS(3)
    アプリ アプリ アプリ
    ホストOS(Windows/Linuxなど)
    アプリ

    View Slide

  23. 今までの仮想化(2) 「ハイパーバイザー型」
    23
    ホストOSの代わりに「ハイパーバイザー」が仮想サーバを
    制御する。ホストサーバ全体を仮想化で利用するため、ホス
    トOSを経由しないためホストOS型よりレスポンスが良い
    ハイパーバイザー
    (VMWareなど)
    OS (1) OS(2) OS(3)
    アプリ アプリ アプリ

    View Slide

  24. 「コンテナ」
    24
    OSの代わりに各コンテナがアプリを稼動させます。今まで
    より一番ホストマシンの処理負荷が低い
    コンテナ管理ソフトウェア
    (Dockerなど)
    コンテナ(1) コンテナ(2) コンテナ(3)
    アプリ アプリ アプリ
    ホストOS(Linux)
    アプリ

    View Slide

  25. 25
    Docker Engine
    Linux Kernel
    ・namespaces
    ・cgroups
    LXC libcontainer runC
    containerd
    v0.9~
    v1.11~
    Version 7 Unix
    chroot
    jail
    dockerd
    v1.12~
    デーモン
    ライブラリ
    ランタイム
    docker daemon
    ・SELinux
    ・capabilities
    … etc
    Docker: the container engine
    v1.11~
    カ ー ネ ル
    ネ ー ム ス ペ ー ス
    シ ー グ ル ー プ
    エ ス イ ー リ ナ ッ ク ス
    ケ ー パ ビ リ テ ィ
    エルエックスシー リ ブ コ ン テ ナ ラ ン シ ー
    ド ッ カ ー デ ー モ ン
    コ ン テ ナ デ ィ ー
    ド ッ カ ー デ ィ ー
    ド ッ カ ー エ ン ジ ン
    オ ー プ ン コ ン テ ナ
    イ ニ シ ア テ ィ ブ

    View Slide

  26. 2
    何がうれしいのか?

    View Slide

  27. よく言われるDocker(コンテナ)のメリット
    •処理速度が速い
    → OSやハードウェアを仮想化していないため
    オーバーヘッドが少なく処理能力が高い
    •メモリやディスクの消費量をおさえられる
    → それぞれにカーネルを持たないため
    メモリ/ディスクの消費量をおさえられる。
    •ポータビリティ
    → 環境を意識せず使える
    2

    View Slide

  28. DockerのWebページに行くと…
    2
    DockerのWebページにある「BUOLD,SHIP,RUN」とは?

    View Slide

  29. 2

    View Slide

  30. 3
    デモ

    View Slide

  31. 31
    $ docker
    Docker Hub
    Nginx
    Build Run
    Ship
    開 発 ・ 構 築 移 動 実 行
    今日やること

    View Slide

  32. • 基本操作とコンテナ作成・デプロイ方法を習得
    32
    1. さくらのクラウド にログイン
    2. 仮想サーバ(CentOS 7.2)の起動
    3. Docker Engine のセットアップ
    4. docker コマンドの基本操作を学ぶ
    5. Nginx イメージを作成
    6. Docker Hub にログイン
    7. Docker Hub に push
    8. Arukas に Nginx をデプロイ
    $ docker
    Docker Hub
    Nginx
    デモの流れ

    View Slide

  33. Dockerをインストールする
    33

    View Slide

  34. Dockerをインストールするサーバについて
    3
    今回はCentOS 7系でインストールします
    今日の資料は別途、公開いたします
    2万円クーポンを配るのでそれで復習できます

    View Slide

  35. サーバにDockerをインストールする
    3
    とりあえず「yum -y update」でパッケージ情報を最新にする
    yum -y update

    View Slide

  36. サーバにDockerをインストールする
    3
    「curl -fsSL https://get.docker.com/ | sh」とコマンドを入れるとDocker
    のインストールがはじまります。
    curl -fsSL https://get.docker.com/ | sh

    View Slide

  37. Dockerを開始する
    3
    サービスを有効します。
    systemctl enable docker.service

    View Slide

  38. Dockerを開始する
    3
    「systemctl start docker」とコマンドを入れるとDockerが動きます
    systemctl start docker

    View Slide

  39. Dockerがインストールされているか確認
    3
    「docker version」と入力してDockerのバージョンが表示されれば、
    Dockerが正常にインストールされています。
    docker version

    View Slide

  40. 4
    コンテナを起動する「docker run」

    View Slide

  41. docker run
    ■docker run コマンド
    → 指定したイメージのコンテナを起動する
    ■構文
    → docker run イメージ [オプション][コマンド][引数]
    ■オプション
    → -d バックグランドで実行
    → -i コンテナの標準入力を開く
    → -t ttyを確保する
    → -p ポートフォワード
    4

    View Slide

  42. Hello World
    4
    ちゃんとDockerが動くか「hello world」を動かしてみたいと思います。
    上記のコマンドを入力してください。
    docker run hello-world

    View Slide

  43. docker run hello-worldの結果
    4
    「hello world」の入力が終わると「docker run –it ubuntu bash」を試し
    てみろ、と言われているので、これを入力してみましょう。

    View Slide

  44. ubuntuを入れてみる
    4
    Dockerの上でUbuntuを入れて、コマンド入力ができるようにしてみる。
    「-it」で、コンテナの中で入力できるようになる。
    docker run -it ubuntu bash

    View Slide

  45. ubuntuを入れてみる
    4
    上記コマンドでコンテナで作られたUbuntuのバージョンがわかります
    cat /etc/issue

    View Slide

  46. Dockerを利用することでCentOS上でubuntuを利
    用することができます。
    ただし、このubuntuには、ほとんどコマンドが
    入っていません。
    例えば「curl ifconfig.me/ip」を叩くと、なにも表
    示されないと表示されます。
    4

    View Slide

  47. 4

    View Slide

  48. 起動したubuntuにcurlを利用できるようにする
    4
    「apt-get update」を叩いた後「apt-get install curl」で「curl」をインス
    トールしてください。インストール中、色々と聞かれますがとりあえずyを
    押して下さい。
    apt-get update
    apt-get install curl
    (1)
    (2)

    View Slide

  49. Curlがインストールされていることの確認
    4
    「curl ifconfig.me/ip」でIPを表示してみる
    curl ifconfig.me/ip

    View Slide

  50. 作成したコンテナから出る
    5
    「exit」をコマンドを叩くとコンテナから出て、このコンテナが止る。
    コンテナが止ると今までやった作業(apt-getとか)は保存されない。
    exit

    View Slide

  51. 再度、コンテナを動かすと…
    5
    再度コンテナを起動して「curl ifconfig.me/ip」を入力してください。これ
    を入力しても、先ほどのように実行されないはずです。
    docker run -it ubuntu bash
    curl ifconfig.me/ip
    (1)
    (2)

    View Slide

  52. コンテナについて
    •exitするだけで、今までの動作が消えてしまう
    ので、このままだと使えないです。
    •次はバックグランドでDockerのコンテナを利
    用する方法について解説します。
    5

    View Slide

  53. 5
    バッググランドでコンテナを動かす

    View Slide

  54. 今の時刻を毎秒表示するコンテナを起動する
    5
    上記のコンテナを起動すると、時刻を1秒ごとに表示するコンテナが表示さ
    れる。しばらく動かしてみて「ctrl + C」で止めてください。
    docker run jpetazzo/clock

    View Slide

  55. さきほどのコンテナをバックグランドで動かす
    5
    コンテナをバックグランドで動かすにはrunコマンドに「-d」をつける。
    上記のコマンドを入力すると、先ほどのように時刻は表示されずバックグラ
    ンドで動いており、ログは記録されている。
    docker run -d jpetazzo/clock

    View Slide

  56. 5
    docker psでコンテナを確認する

    View Slide

  57. docker ps
    ■docker ps コマンド
    → コンテナIDを確認するためコマンド。これでわかる
    ものは
    ・コンテナのID
    ・コンテナがどのイメージから作られたのか?
    ・コンテナが動いてどのぐらい経過したのか?
    ■オプション
    → -l 直近(latest)のコンテナの情報を表示
    → -q コンテナのショートIDのみ表示
    → -a 停止しているコンテナも含め全て(all)表示
    5

    View Slide

  58. docker psでコンテナの確認
    5
    docker psを入力すると、現在動いているコンテナの情報が見られる
    現在のところ起動しているコンテナは「jpetazzo/clock」のみのはず
    docker ps

    View Slide

  59. docker ps -aで今まで起動したコンテナを確認
    5
    docker ps –aを入力すると今まで起動したコンテナが確認できる。
    docker ps -a

    View Slide

  60. docker psのオプション
    6
    「docker ps -l」で直近に操作したコンテナを表示し「docker ps -q」でコ
    ンテナのショートIDが表示される。
    docker ps -l
    docker ps -q
    (1)
    (2)

    View Slide

  61. 6
    docker logsでコンテナ
    のログを確認する

    View Slide

  62. docker logs
    ■docker logs コマンド
    → コンテナの標準出力の内容をコンテナ外から
    確認する
    ■オプション
    → -tail ログの最後数行が見られるようになる
    → -follow リアルタイムでログが確認できる。
    6

    View Slide

  63. docker logs
    6
    「docker logs(コンテナのID)」を入力すると、コンテナの標準出力が見
    られる。先ほどバックグランドで動かした「 jpetazzo/clock 」のコンテナ
    IDを入力してみましょう。
    docker logs (コンテナのID)

    View Slide

  64. docker logsのオプション
    6
    「-- tail」オプションを使うことで、ログの最後数行が見られるようになる。
    例えば、(1)のコマンドはログの最後3行を出すコマンドとなる。
    docker logs --tail 3 (コンテナのID)

    View Slide

  65. リアルタイムでログを見る
    6
    docker logs --tail 1 --follow (コンテナのID)
    Unixコマンドのtail -fのようにfollowオプションをつけることでリアルタイ
    ムでログを確認することができる。上記のコマンドを入力するとリアルタイ
    ムでログが表示される。止めるには「Ctrl + C」で

    View Slide

  66. 6
    docker kill、docker stopで
    コンテナを止める

    View Slide

  67. コンテナの停止
    6
    「-d」で動作したコンテナを止めるにはkillかstopを使う。今回はkillコマン
    ドで、先ほどのコンテナを止めてください。
    docker kill (コンテナのID)
    docker stop (コンテナのID)
    (1)
    (2)

    View Slide

  68. 停止したコンテナを確認する
    6
    「docker ps」で先ほど止めたコンテナのIDが無いことを確認してください
    「docker ps –a」で止めたコンテナも確認できます。
    docker ps
    docker ps -a
    (1)
    (2)

    View Slide

  69. Docker上でGhostを
    インストールする
    69

    View Slide

  70. 70
    これだけではつまらないので
    アプリを入れてみましょう

    View Slide

  71. Ghostとは?
    71
    「Ghost」は最近、人気が出ているNode.js製の軽量ブログエンジンです。
    今回はDockerを利用して、コマンド1発でインストールします。

    View Slide

  72. 通常でGhostをインストールするのに必要なもの
    72
    • Node.jsとnpm
    • ApacheとかのWebサーバ
    • その他、色々
    「Ghost」をインストールして利用するには上記のような物を色々とインス
    トールする必要があり面倒です。

    View Slide

  73. DockerからGhostを入れる
    73
    Ghostを80番ポートで利用できるようにします。元々Ghostは2368番ポート
    で動いているので80番ポートとマッピングさせます。
    docker run -p 80:2368 -d ghost

    View Slide

  74. インストールが終わったらIPアドレスをいれる
    74
    インストールが終わったら「(IPアドレス)」をブラウザで入力してください。
    上記のような「画面」が表示されます。「(IPアドレス)/admin」でGhostの
    セットができます。

    View Slide

  75. docker psでコンテナIDを調べる
    75
    起動を確認したら、このコンテナを止めてみましょう。コンテナの止め方は
    「docker stop (コンテナのID)」で止りますので「docker ps」でコンテナ
    IDを調べます。
    docker ps

    View Slide

  76. docker psでコンテナIDを調べる
    76
    「docker ps」を入力して「CONTANER ID」を確認する。

    View Slide

  77. docker psでコンテナIDを調べる
    77
    「docker stop (コンテナのID)」を入力すると、ghostのコンテナが止りま
    す。(先ほどの例だと07a4e04f6418となります。)
    docker stop (CONTANER ID)

    View Slide

  78. nginx dockerイメージの作成
    78

    View Slide

  79. 79
    ここからはnginxを例にして、
    Dockerイメージの作成を行います

    View Slide

  80. Dockerを利用してnginxを起動する
    80
    「nginxを立ち上げる
    docker run -itd -p 80:80 nginx:latest

    View Slide

  81. Dockerを利用してnginxを起動する
    81
    起動が出来たらブラウザからIPアドレスを入力し、上記の画面が表示される
    のを確認する

    View Slide

  82. docker exec
    ■docker exec コマンド
    → 実行中のコンテナでコマンドを実行します。
    ■構文
    → docker exec [オプション] コンテナ コマン
    ド [引数...]
    ■オプション
    → -d コマンドをバックグラウンドで実行
    8

    View Slide

  83. docker exec コマンドで bash の追加プロセスを実行
    83
    docker exec コマンドで bash の追加プロセスを実行。
    docker exec -it $(docker ps -ql) /bin/bash

    View Slide

  84. ps -ef コマンドで、nginx コンテナの中での操作を確認。
    84
    コンテナの中でnginxが動いているのを確認する
    ps -ef

    View Slide

  85. 85
    上記のようになっている事を確認

    View Slide

  86. Nginx のドキュメント・ルートにある index.html を書き換えます。
    86
    Nginx のドキュメント・ルートにある index.html を書き換えhello world
    が表示されるようにします
    echo 'hello world' > /usr/share/nginx/html/index.html
    cat /usr/share/nginx/html/index.html

    View Slide

  87. ページの表示確認
    87
    ブラウザで表示を確認します。画面に hello world が表示されます。

    View Slide

  88. exitでbashを終了する
    88
    exitでbashを終了する。
    exit

    View Slide

  89. 89
    変更したnginxコンテナから
    イメージを作成してみましょう

    View Slide

  90. Docker コンテナとDocker イメージの違い
    ・「Docker run」をコマンドを叩くとDocker
    イメージからDocker コンテナが作られる
    ・Dockerイメージは読み込みのみ可能(read-
    only)。変更はできない。
    ・Dockerコンテナは、読み書きができるファイ
    ルシステム
    9

    View Slide

  91. 新しいイメージを作るには
    91
    ・docker commit
    → コンテナからDocker イメージを作る。
    ・docker build
    → Docker fileからDockerイメージを作る。
    ・docker import
    → Base imageからDockerイメージをつくる。

    View Slide

  92. docker commit
    ■docker commit コマンド
    →コンテナの変更を元に新しいイメージを作成
    ■構文
    → docker commit [オプション] コンテナ [リポジトリ[:タグ]]
    9

    View Slide

  93. docker commitでイメージを作る
    93
    docker commit コマンドで mynginx:1.0 イメージを作成します。
    docker commit $(docker ps -ql) mynginx:1.0

    View Slide

  94. docker images
    ■docker images コマンド
    →ローカルにあるイメージを一覧表示します。
    ■構文
    → docker images [オプション] [リポジトリ[:タグ]]
    9

    View Slide

  95. docker images で利用してきたイメージを見てみる
    95
    docker images コマンドで、先ほど作ったイメージ「mynginx:1.0」が作
    成されたのを確認します。
    docker images

    View Slide

  96. docker images で利用してきたイメージを見てみる
    96
    docker
    docker run -d -p 8080:80 mynginx:1.0
    docker run -d -p 8080:80 mynginx:1.0

    View Slide

  97. curlコマンドからちゃんと起動しているか確認をする
    97
    curl コマンドで、コマンドライン上でポート 8080 を開きます。
    (ブラウザでポートを指定して確認しても良いです。)
    curl http://localhost:8080

    View Slide

  98. Dockerfileを利用して、
    Dockerイメージを作る
    98

    View Slide

  99. 自分が使用したイメージの表示
    99
    このコマンドを入力すると、過去に利用したDockerイメージが表示されます
    docker images

    View Slide

  100. 100
    Dockerfileを利用して、
    Dockerイメージを作る。

    View Slide

  101. Dockerfile?
    ・DockerfileはDockerイメージを作るためのレ
    シピのようなものです。
    ・ Dockerfileは作成するDockerイメージの内容
    をテキスト形式で記述します。
    ・作成したテキストファイルはdocker buildコ
    マンドで読み込んでDockerイメージの作成を実
    行します。
    10

    View Slide

  102. Dockerfileを書いてみる
    10
    作業用ディレクトリ mynginx を作成し、移動します。
    mkdir mynginx
    cd myimage
    (1)
    (2)

    View Slide

  103. 簡単なDockerfileを作る
    10
    次のコマンドを実行し、 Dockerfile を作成します。
    tee ./Dockerfile <<-'EOF'
    FROM nginx:latest
    RUN echo "hello world
    $(date)" >
    /usr/share/nginx/html/index.html
    EOF

    View Slide

  104. docker build
    ■docker build コマンド
    → DockerfileからDockerイメージを作る
    ■構文
    docker build –t :<タ
    グ名>
    10

    View Slide

  105. docker build
    105
    docker build コマンドで mynginx:1.1 イメージを自動作成します。
    docker build -t myimage .
    docker build -t mynginx:1.1 .

    View Slide

  106. 106
    Successfully built <イメージID>が出れば、イメージの作成成功

    View Slide

  107. docker build
    107
    docker images コマンドで、イメージが作成されたのを確認します。
    docker images

    View Slide

  108. docker build
    108
    作成した mynginx:1.1 イメージを使って、新しいコンテナを実行します。
    docker run -d -p 8888:80 mynginx:1.1

    View Slide

  109. docker build
    109
    curl コマンドで、コマンドライン上でポート 8888 を開きます。
    curl http://localhost:8888

    View Slide

  110. 作成したDockerイメージを
    Docker Hubにアップロードする
    110

    View Slide

  111. Docker Hubにアクセス
    11
    https://hub.docker.com/ からDocker IDを登録し、ログインします。

    View Slide

  112. Docker Hub にログインします。
    112
    上記コマンドでDocker Hub にログインできます。
    docker login

    View Slide

  113. docker tags コマンド
    113
    docker tags コマンドで mynginx:1.1 イメージに Docker Hub ID の情報
    を付けます
    docker tag mynginx:1.1 <自分のID名>/mynginx:1.1

    View Slide

  114. docker imges コマンド
    114
    docker images で確認します。先ほどタグづけしたイメージを確認いたし
    ます。
    docker images

    View Slide

  115. docker Push コマンド
    115
    docker push コマンドでイメージを送信します。
    docker push <自分のID名/mynginx:1.1>

    View Slide

  116. 116
    コンテナ等をまとめて処理する

    View Slide

  117. docker build
    117
    上記コマンドから実行しているコンテナをまとめて終了させられます
    docker kill $(docker ps -q)

    View Slide

  118. docker build
    118
    上記コマンドでコンテナ(コンテナ用のイメージ・レイヤとメタ情報)を削
    除します。
    docker rm $(docker ps -aq)

    View Slide

  119. 119
    不要なイメージの削除

    View Slide

  120. docker images -q
    120
    docker images -q を実行すると、ローカルにあるイメージ ID を表示します
    docker images -q

    View Slide

  121. docker images -q
    121
    docker images -q を実行すると、ローカルにあるイメージ ID を表示します
    docker images -q

    View Slide

  122. docker rmi
    122
    docker rmi とdocker images –aqを利用して全てのイメージを削除します。
    docker rmi -f $(docker images -aq)

    View Slide

  123. Docker Hubにアップロードした
    イメージをArukasで実行する
    123

    View Slide

  124. Arukasとは
    DockerイメージをDocker最適化したArukasインフラで稼働
    12

    View Slide

  125. 12

    View Slide

  126. 126
    Arukasの利用方法

    View Slide

  127. ログイン
    127
    https://app.arukas.io/から新規登録を行い、登録が完了したらログインをしてくだ
    さい

    View Slide

  128. アプリの作成
    128
    ログインをしたら「新しいアプリケーションを作成」をクリック

    View Slide

  129. 12
    Imgesに「 /mynginx:1.1 」← 1.1 のタグを忘れずに
    Portに「80」を入力をして、一番下の「アプリケーションを作成」をクリックする

    View Slide

  130. 13
    ダッシュボードに戻り、作成したアプリの「起動ボタン」をクリックする。

    View Slide

  131. 起動状態
    13
    起動状態になったら「Endpoint」をクリックして、nginxが動いているか確認する

    View Slide

  132. まとめ
    132

    View Slide

  133. まとめ
    Docker の基本コマンドをデモしました。
    Dockerを利用すると開発環境から
    本番環境への移動が便利です
    133

    View Slide

  134. 134
    ご静聴ありがとうございました。
    「さくらのクラウド 2万円クーポン」を配布いたします。
    今日の復習にご利用ください

    View Slide

  135. 13
    ご清聴ありがとうございました
    http://cloud.sakura.ad.jp

    View Slide

  136. おまけ

    View Slide

  137. Dockerを利用してWordPressを
    構築する。
    137

    View Slide

  138. Wordpressをインストールしてみる
    138
    上記のコマンドを入力すると、色々とダウンロードがはじまる。
    docker run wordpress

    View Slide

  139. Wordpressをインストールしてみる
    139
    エラーが出てWordPressが起動できない、どうやらMySQLが必要な様子。
    というわけで、MySQLのコンテナを持ってくる。

    View Slide

  140. MySQLイメージのダウンロード
    140
    「docker pull [イメージ名]」でイメージのダウンロードがはじまります。
    ちなみに「docker run [イメージ名]」をした時にローカルにコンテナイメー
    ジがないと自動的にダウンロードされます
    docker pull mysql

    View Slide

  141. MySQLの設定
    141
    わかりやすいように –eを利用することでMySQLのパスワードの設定が可能
    となります。(パスワード)には、任意のパスワードを入れてください
    docker run --name mysql -e MYSQL_ROOT_PASSWORD=(パスワード)
    -d mysql

    View Slide

  142. Wordpressの立ち上げ
    142
    上記のコマンドを入力するとWordPressが立ち上がります。「-- link」は、-
    -link <連携したいコンテナ名>:<エイリアス名>オプションで新しいコンテ
    ナを起動すると,そのコンテナ内で連携したいコンテナのポート番号やIPを
    環境変数として利用できるという機能です
    docker run --name wordpress --link mysql:mysql -p
    80:80 wordpress

    View Slide

  143. 143
    インストールに成功するとこんな画面が出てきます。

    View Slide

  144. ブラウザでIPアドレスにアクセス
    144

    View Slide

  145. 145
    「-d」を指定していないので「ctrl + c」を入力すると、このコンテナ自体
    も停止してしまいます。
    それでは、次はバッグランドでWordPressを起動してみましょう。
    ただし、同じ名前のコンテナ(--name以下)は作れないので、名前を変えて
    みましょう。

    View Slide

  146. 146
    Docker Compose

    View Slide

  147. Docker Composeとは?
    147
    Docker Composeは、複数のコンテナか
    ら構成するサービスを従来よりも簡単に
    構築できるツールです。
    従来はコンテナを作成するには、いちい
    ち「docker run」しなければならなかっ
    たのが、コマンド1発で複数のコンテナ
    を利用したサービスを構築できます。

    View Slide

  148. 148
    Docker Composeを利用して
    Rocket.Chatの環境を構築する

    View Slide

  149. Docker composeのバイナリをセットする。
    149
    上記のコマンドを入力して、Docker Composeのバイナリをセットする
    curl -L
    https://github.com/docker/compose/releas
    es/download/1.8.0/docker-compose-
    `uname -s`-`uname -m` >
    /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
    curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

    View Slide

  150. Docker composeがインストールされたか確認
    150
    「docker-compose version」を入力すると、Docker composeのバージョ
    ンが表示される、正しくインストールされれば、このコマンドでバージョン
    情報が表示される。
    docker-compose version

    View Slide

  151. Docker-compose.yamlの作成
    151
    本来であれば、作業用のディレクトリの中に「docker-compose.yaml」を用
    意する必要があるのですが、今回は事前に私の方で作成したので、そちらをク
    ローンしてください。クローンが終わったら「rocketchat」に移動します。
    git clone https://github.com/zembutsu/sakura-cloud-
    hands-on.git
    cd sakura-cloud-hands-on/rocketchat

    View Slide

  152. イメージを取得する
    152
    先ほど作成したディレクトリ「rocketchat」の中で「docker-compose
    pull」を入力。Rocket.Chatに必要なイメージをダウンロードします。
    docker-compose pull

    View Slide

  153. イメージを取得する
    153
    エラーが出ていなければ「docker images」を入力して「mongo」と
    「rocketchat/rocket.chat」と「rocketchat/hubot-rocketchat」のイメー
    ジを取得できているか確認をする。
    docker images

    View Slide

  154. 154
    エラーが出ていなければ「docker images」を入力して「mongo」と
    「rocketchat/rocket.chat」と「rocketchat/hubot-rocketchat」のイメー
    ジを取得できているか確認をする。
    # docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    mongo latest 7f09d45df511 5 days ago 336.1 MB
    rocketchat/rocket.chat latest 30826dfbbfa6 2 weeks ago 332.4 MB
    rocketchat/hubot-rocketchat latest a727f5c88c43 5 weeks ago 800.5 MB

    View Slide

  155. Composeを使って複数のコンテナを立ち上げる
    155
    イメージを取得できていれば「docker-compose up -d」を入力して
    Rocket.chat起動に必要な複数のコンテナを立ち上げます。
    docker-compose up -d

    View Slide

  156. 「docker ps」を入力して動作を確認する
    156
    「docker-compose up -d」でコンテナを立ち上げた後「docker ps」で、
    正常に動作しているか確認する。
    docker ps

    View Slide

  157. ブラウザで「IPアドレス」を入力する
    157
    正常に動作していれば、ブラウザに http://サーバのIPアドレス:3000/ を入
    力すれば、Rocket.Chat ログイン画面が表示されます。「新しいアカウント
    を登録」をクリック後、名前、メールアドレス、パスワードを入力します。

    View Slide

  158. Wordpressの立ち上げ
    158
    上記のコマンドを入力するとWordPressが起動します。起動するのを確認し
    たら、docker killで落としてみましょう。
    docker run --name wordpress2 -d --link mysql:mysql -p
    80:80 wordpress

    View Slide