Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dockerに触ってみよう

横田真俊(wslash)
January 18, 2017
3.6k

 Dockerに触ってみよう

2017年1月18日のハンズオン資料です。

コマンドの補足資料は下記の通りです
http://qiita.com/Wslash/items/941697bf0fcd3213e7dd

横田真俊(wslash)

January 18, 2017
Tweet

Transcript

  1. エバンジェリストチーム 横田真俊(@Wslash)
    さくらインターネット株式会社
    初心者向けDockerハンズオン
    Dockerを触ってみよう!
    2017/01/18

    View full-size slide

  2. 自己紹介
    氏名
    横田真俊(@Wslash)
    「さくらのインターネット」の
    エバンジェリスト 兼 さくらのクラウド企画担当です。
    年に50回ほどのセミナーやハンズオンなどを担当しています。
    左のアイコンで、ツイッターをやっていますので
    お気軽にお声がけください
    2

    View full-size slide

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

    View full-size slide

  4. Dockerに触れることで
    コンテナがどのようなものか
    体験していただきます
    5

    View full-size slide

  5. Dockerとは何か?
    6

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. 1
    何がうれしいのか?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. 1
    ハンズオン

    View full-size slide

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

    View full-size slide

  15. • 基本操作とコンテナ作成・デプロイ方法を習得
    18
    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 full-size slide

  16. コントロールパネルに
    ログインしてみよう
    19

    View full-size slide

  17. 「コントロールパネル」にログイン
    2
    「コントロールパネル」にログインするには、Webサイトの上部にある
    「コントロールパネルログイン」をクリックしてください

    View full-size slide

  18. 「コントロールパネル」にログイン
    2
    「コントロールパネル」にログインしたら「さくらのクラウドユーザ」
    としてログインの箇所にある「ユーザコード」「会員ID」
    「パスワード」を入力してください

    View full-size slide

  19. ログイン後の画面
    2
    無事にログインできたら、このような画面が表示されますので
    「さくらのクラウド(IaaS)」をクリックしてください

    View full-size slide

  20. ログイン後の画面
    2
    さくらのクラウド(IaaS) をクリックすると
    このような画面が表示されます

    View full-size slide

  21. サーバを作成してみよう
    24

    View full-size slide

  22. まずは一番小さいサーバを作成してみよう
    2
    ・まずは、CPU 1ギガ、メモリ 1GB、ディスク SSD 20GB、NIC 1のもので
    OSはCent OS 7.2の物を作成してみましょう

    View full-size slide

  23. サーバを作成する
    2
    ・メインメニューより「サーバ」をクリック
    ・その後「追加」をクリックすると「サーバ作成画面」に移動します

    View full-size slide

  24. サーバ作成画面(1)
    2
    まず「ホスト名」を入力し、次にサーバプランを選択します。今回はホスト
    名は適当に入力し、サーバプランは「1GB/1仮想コア」を選択します。

    View full-size slide

  25. サーバ作成画面(2)
    2
    ボタンにないプランの場合は「全てのアイテムから選択」を選択すると
    アイテム一覧が表示され、そこから選択できます

    View full-size slide

  26. サーバ作成画面(3)
    2
    次に「ディスクプラン」を選択します。今回は「20GB SSDプラン」を選択
    します。上記のプランにない物を利用する場合は、サーバと同じように「全
    てのアイテムから選択」を選択してください。

    View full-size slide

  27. サーバ作成画面(4)
    3
    ディスクイメージを選択します、利用したい「OS」を選択してください。
    今回は「CentOS 7.2」を利用します。

    View full-size slide

  28. サーバ作成画面(5)
    3
    接続のネットワークに「インターネット」を選択し「管理ユーザのパスワー
    ド」でrootのパスワードを入力します。

    View full-size slide

  29. シンプルモードを解除する
    3
    全ての入力項目を入力し終わった後「作成」をクリックします

    View full-size slide

  30. 3
    「操作確認」のダイアログが表示されます。問題が無ければ「作成」をク
    リックします。

    View full-size slide

  31. 3
    「作成」をクリックすると上記のダイアログが出てきます。
    ステータスが全て成功になるとサーバが作成されます。

    View full-size slide

  32. 3
    サーバの作成が完了すると、画面の右下にダイアログが表示されます。これ
    をクリックしてください。

    View full-size slide

  33. 3
    ダイアログをクリックすると、サーバ情報が表示されます。

    View full-size slide

  34. リモートスクリーンについて
    37

    View full-size slide

  35. 「リモートスクリーン」
    3
    ブラウザ内でサーバの操作ができます。作成したサーバの
    「コンソール」をクリックしてください。

    View full-size slide

  36. 文字入力の方法
    3
    画面中央をクリックすると、文字入力ができるようになりま
    す。rootと先ほど入力したパスワードを入れてください

    View full-size slide

  37. 「リモートスクリーン」
    4
    「ペースト」を選択すると、文字列のペーストも可能です

    View full-size slide

  38. 4
    IPアドレスでSSH接続できるので
    わかる方はそれで接続してください

    View full-size slide

  39. Dockerをインストールする
    42

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  58. 6
    バッググランドでコンテナを動かす

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  61. 6
    docker psでコンテナを確認する

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  71. 7
    docker kill、docker stopで
    コンテナを止める

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  83. nginx dockerイメージの作成
    87

    View full-size slide

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

    View full-size slide

  85. Dockerを利用してnginxを起動する
    89
    「docker stop (コンテナのID)」を入力すると、ghostのコンテナが止りま
    す。(先ほどの例だと07a4e04f6418となります。)
    docker run -itd -p 80:80 nginx:latest

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  88. docker exec コマンドで bash の追加プロセスを実行
    92
    「docker stop (コンテナのID)」を入力すると、ghostのコンテナが止りま
    す。(先ほどの例だと07a4e04f6418となります。
    docker exec -it $(docker ps -ql) /bin/bash

    View full-size slide

  89. docker exec コマンドで bash の追加プロセスを実行
    93
    「docker stop (コンテナのID)」を入力すると、ghostのコンテナが止りま
    す。(先ほどの例だと07a4e04f6418となります。
    docker exec -it $(docker ps -ql) /bin/bash

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  93. ページの表示確認
    97
    ブラウザで表示を確認します。「Shift」キーを押しながら再読み込みボタン
    を押すと、画面に hello world が表示されます。

    View full-size slide

  94. exitでbashを終了する
    98
    exitでbashを終了する。
    exit

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  97. 新しいイメージを作るには
    101
    本日はDocker fileからDockerイメージを作る「docker build」を試します
    ・docker commit
    → コンテナからDocker イメージを作る。
    ・docker build
    → Docker fileからDockerイメージを作る。
    ・docker import
    → Base imageからDockerイメージをつくる。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  118. 122
    不要なイメージの削除

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  130. 135
    Arukasの利用方法

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  136. まとめ
    141

    View full-size slide

  137. まとめ
    Docker の基本コマンドを学びました
    DockerとDocker Composeを利用すると、
    すぐに検証環境が利用できて便利
    142

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  149. 155
    Docker Compose

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  152. Docker composeのバイナリをセットする。
    158
    上記のコマンドを入力して、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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  157. 163
    エラーが出ていなければ「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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide