Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【eLV勉強会】 Dockerを触ってみよう
Search
横田真俊(wslash)
June 16, 2016
Technology
1
320
【eLV勉強会】 Dockerを触ってみよう
6月16日のに行われる「【eLV勉強会】 Dockerを触ってみよう」の資料となります。
横田真俊(wslash)
June 16, 2016
Tweet
Share
More Decks by 横田真俊(wslash)
See All by 横田真俊(wslash)
「ssmjpで喋ったことのない私が、ssmjpでプレゼンデビューするためのテクニックを話す」
masatoshi
1
2.7k
分散SNSの歴史を雑にしゃべる
masatoshi
2
1.3k
さくらインターネットとマストドン
masatoshi
2
2.2k
マストドンを「さくらのクラウド」で素早く立ち上げる
masatoshi
0
620
さくらインターネットのIPv6対応状況について(Ver 九州インフラ交流勉強会(Kixs) Vol.004」)
masatoshi
0
620
「はじめて触るDocker入門」
masatoshi
1
490
Dockerに触ってみよう
masatoshi
2
3.8k
プレゼン初心者に ありがちな アンチパターン 野望篇
masatoshi
2
190
さくらインターネットのサービスを例にしたクラウドサービスの作り方
masatoshi
0
550
Other Decks in Technology
See All in Technology
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
110
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
490
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
190
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
850
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
MLOps の現場から
asei
7
650
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.4k
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
180
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
110
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Designing Experiences People Love
moore
138
23k
The Cult of Friendly URLs
andyhume
78
6.1k
Music & Morning Musume
bryan
46
6.2k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Why Our Code Smells
bkeepers
PRO
335
57k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
BBQ
matthewcrist
85
9.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Gamification - CAS2011
davidbonilla
80
5.1k
Transcript
(C)Copyright 1996-2014 SAKURA Internet Inc. さくらインターネット 横田真俊(@wslash) 2016/06/16
2 氏名 横田真俊(@Wslash) 「さくらのクラウド」の企画担当 兼 エバンジェリストをやっております 年に50回程度の講演・ハンズオンを 行っております 左のアイコンで、ツイッターを やっていますのでお気軽に
お声がけください
3 Amazon EC2/S3 入門 今は、さくらのクラウド企画担当 をやっていますが、昔はこんな本 を書いていました
4 ツイッターやFacebookなど ソーシャルメディアの本 を5冊ほど書いてます
5 インフラエンジニア向けの 本も書きました。 6月24日に発売されます
Dockerに触っていただき どんなものなのか体験 していただきます 6
(C)Copyright 1996-2014 SAKURA Internet Inc.
8 ホストOSの上で「仮想化ソフト」を動かすタイプ ホストOSとアプリを共存できるのでPCからの個人利用の形 で多いが、ホストの負荷が大きい ホスト形仮想化ソフト (VirtualBOXなど) OS (1) OS(2) OS(3)
アプリ アプリ アプリ ホストOS(Windows/Linuxなど) アプリ
9 ホストOSの代わりに「ハイパーバイザー」が仮想サーバを 制御する。ホストサーバ全体を仮想化で利用するため、ホス トOSを経由しないためホストOS型よりレスポンスが良い ハイパーバイザー (VMWareなど) OS (1) OS(2) OS(3)
アプリ アプリ アプリ
10 OSの代わりに各コンテナがアプリを稼動させます。今まで より一番ホストマシンの処理負荷が低い コンテナ管理ソフトウェア (Dockerなど) コンテナ(1) コンテナ(2) コンテナ(3) アプリ アプリ
アプリ ホストOS(Linux) アプリ
• 処理速度が速い → OSやハードウェアを仮想化していないためオーバーヘッド が少なく処理能力が早い • メモリやディスクの消費量をおさえられる → それぞれにカーネルを持たないためメモリ/ディスクの 消費量をおさえられる。
• ポータビリティ → 環境を意識せず使える 11
12 何がうれしいのか?
▪検証・使い捨て環境がすぐに使える → 「低コスト」かつ「コマンド1発」で利用できる。 ▪環境の統一化 → 開発・運用・ステージングと色々な「環境」を用意せずに コンテナに統一できる。 ▪クラウド時代のバズワードが手軽に実現 → イミュータブル、オートスケーリング
etc… 13
(C)Copyright 1996-2014 SAKURA Internet Inc.
15 「コントロールパネル」にログインするには、Webサイトの上部にある 「コントロールパネルログイン」をクリックしてください
16 「コントロールパネル」にログインしたら「さくらのクラウドユーザ」 としてログインの箇所にある「ユーザコード」「会員ID」 「パスワード」を入力してください
17 無事にログインできたら、このような画面が表示されますので 「さくらのクラウド(IaaS)」をクリックしてください
18 さくらのクラウド(IaaS) をクリックすると このような画面が表示されます
(C)Copyright 1996-2014 SAKURA Internet Inc.
20 ・まずは、CPU 1ギガ、メモリ 1GB、ディスク SSD 20GB、NIC 1のもので OSはCent OS 7.2の物を作成してみましょう
21 ・メインメニューより「サーバ」をクリック ・その後「追加」をクリックすると「サーバ作成画面」に移動します
22 まず「ホスト名」を入力し、次にサーバプランを選択します。今回はホスト 名は適当に入力し、サーバプランは「1GB/1仮想コア」を選択します。
23 ボタンにないプランの場合は「全てのアイテムから選択」を選択すると アイテム一覧が表示され、そこから選択できます
24 次に「ディスクプラン」を選択します。今回は「20GB SSDプラン」を選択 します。上記のプランにない物を利用する場合は、サーバと同じように「全 てのアイテムから選択」を選択してください。
25 ディスクイメージを選択します、利用したい「OS」を選択してください。 今回は「CentOS 7.2」を利用します。
26 接続のネットワークに「インターネット」を選択し「管理ユーザのパスワー ド」でrootのパスワードを入力します。
27 全ての入力項目を入力し終わった後「作成」をクリックします
28 「操作確認」のダイアログが表示されます。問題が無ければ「作成」をク リックします。
29 「作成」をクリックすると上記のダイアログが出てきます。 ステータスが全て成功になるとサーバが作成されます。
30 サーバの作成が完了すると、画面の右下にダイアログが表示されます。これ をクリックしてください。
31 ダイアログをクリックすると、サーバ情報が表示されます。
(C)Copyright 1996-2014 SAKURA Internet Inc.
33 ブラウザ内でサーバの操作ができます。作成したサーバの 「コンソール」をクリックしてください。
34 画面中央をクリックすると、文字入力ができるようになりま す。rootと先ほど入力したパスワードを入れてください
35 「ペースト」を選択すると、文字列のペーストも可能です
36 IPアドレスでSSH接続できるので わかる方はそれで接続してください
(C)Copyright 1996-2014 SAKURA Internet Inc.
38 今回はCentOS 7系でインストールします 今日の資料は別途、公開いたします 2万円クーポンを配るのでそれで復習できます
39 「curl -sSL https://get.docker.com/ | sh」とコマンドを入れるとDocker のインストールがはじまります。 curl -sSL https://get.docker.com/
| sh
40 「systemctl start docker」とコマンドを入れるとDockerが動きます systemctl start docker
41 「docker version」と入力してDockerのバージョンが表示されれば、 Dockerが正常にインストールされています。 docker version
42 コンテナを起動する「docker run」
▪docker run コマンド → 指定したイメージのコンテナを起動する ▪構文 → docker run イメージ
[オプション][コマンド][引数] ▪オプション → -d バックグランドで実行 → -i コンテナの標準入力を開く → -t ttyを確保する → -p ポートフォワード 43
44 ちゃんとDockerが動くか「hello world」を動かしてみたいと思います。 上記のコマンドを入力してください。 docker run hello-world
45 「hello world」の入力が終わると「docker run –it ubuntu bash」を試し てみろ、と言われているので、これを入力してみましょう。
46 Dockerの上でUbuntuを入れて、コマンド入力ができるようにしてみる。 「-it」で、コンテナの中で入力できるようになる。 docker run -it ubuntu bash
Dockerを利用することでCentOS上でubuntuを利 用することができます。 ただし、このubuntuには、ほとんどコマンドが 入っていません。 例えば「curl ifconfig.me/ip」を叩くと、なにも 表示されないと表示されます。 47
48
49 「apt-get update」を叩いた後「apt-get install curl」で「curl」をインス トールしてください。インストール中、色々と聞かれますがとりあえずyを 押して下さい。 apt-get update apt-get
install curl (1) (2)
50 「curl ifconfig.me/ip」でIPを表示してみる curl ifconfig.me/ip
51 「exit」をコマンドを叩くとコンテナから出て、このコンテナが止る。 コンテナが止ると今までやった作業(apt-getとか)は保存されない。 exit
52 再度コンテナを起動して「curl ifconfig.me/ip」を入力してください。これ を入力しても、先ほどのように実行されないはずです。 docker run -it ubuntu bash curl
ifconfig.me/ip (1) (2)
• exitするだけで、今までの動作が消えてしまう ので、このままだと使えないです。 • 次はバックグランドでDockerのコンテナを利用 する方法について解説します。 53
54 バッググランドでコンテナを動かす
55 上記のコンテナを起動すると、時刻を1秒ごとに表示するコンテナが表示さ れる。しばらく動かしてみて「ctrl + C」で止めてください。 docker run jpetazzo/clock
56 コンテナをバックグランドで動かすにはrunコマンドに「-d」をつける。 上記のコマンドを入力すると、先ほどのように時刻は表示されずバックグラ ンドで動いており、ログは記録されている。 docker run -d jpetazzo/clock
57 docker psでコンテナを確認する
▪docker ps コマンド → コンテナIDを確認するためコマンド。これでわかるものは ・コンテナのID ・コンテナがどのイメージから作られたのか? ・コンテナが動いてどのぐらい経過したのか? ▪オプション →
-l 直近(latest)のコンテナの情報を表示 → -q コンテナのショートIDのみ表示 → -a 停止しているコンテナも含め全て(all)表示 58
59 docker psを入力すると、現在動いているコンテナの情報が見られる docker ps
60 「docker ps –l」で直近に操作したコンテナを表示し「docker ps -q」でコ ンテナのショートIDが表示される。 docker ps -l
docker ps -q (1) (2)
61 docker logsでコンテナ のログを確認する
▪docker logs コマンド → コンテナの標準出力の内容をコンテナ外から確認する ▪オプション → -tail ログの最後数行が見られるようになる →
-follow リアルタイムでログが確認できる。 62
63 「docker logs(コンテナのID)」を入力すると、コンテナの標準出力が見 られる。先ほどバックグランドで動かした「 jpetazzo/clock 」のコンテナIDを 入力してみましょう。 docker logs (コンテナのID)
64 「-- tail」オプションを使うことで、ログの最後数行が見られるようになる。 例えば、(1)のコマンドはログの最後3行を出すコマンドとなる。 docker logs --tail 3 (コンテナのID)
65 docker logs --tail 1 --follow (コンテナのID) Unixコマンドのtail -fのようにfollowオプションをつけることでリアルタイ ムでログを確認することができる。上記のコマンドを入力するとリアルタイ
ムでログが表示される。止めるには「Ctrl + C」で
66 docker kill、docker stopで コンテナを止める
67 「-d」で動作したコンテナを止めるにはkillかstopを使う。今回はkillコマン ドで、先ほどのコンテナを止めてください。 docker kill (コンテナのID) docker stop (コンテナのID) (1)
(2)
68 「docker ps」で先ほど止めたコンテナのIDが無いことを確認してください 「docker ps –a」で止めたコンテナも確認できます。 docker ps docker ps
-a (1) (2)
(C)Copyright 1996-2014 SAKURA Internet Inc.
70 これだけではつまらないので アプリを入れてみましょう
71 「Ghost」は最近、人気が出ているNode.js製の軽量ブログエンジンです。 今回はDockerを利用して、コマンド1発でインストールします。
• Node.jsとnpm • ApacheとかのWebサーバ • その他、色々 72 「Ghost」をインストールして利用するには上記のような物を色々とインス トールする必要があり面倒です。
73 Ghostを80番ポートで利用できるようにします。元々Ghostは2368番ポート で動いているので80番ポートとマッピングさせます。 docker run -p 80:2368 -d ghost
74 インストールが終わったら「(IPアドレス)」をブラウザで入力してください。 上記のような「画面」が表示されます。「(IPアドレス)/admin」でGhostの セットができます。
75 起動を確認したら、このコンテナを止めてみましょう。コンテナの止め方は 「docker stop (コンテナのID)」で止りますので「docker ps」でコンテナ IDを調べます。 docker ps
76 「docker ps」を入力して「CONTANER ID」を確認する。
77 「docker stop (コンテナのID)」を入力すると、ghostのコンテナが止りま す。(先ほどの例だと07a4e04f6418となります。) docker stop (CONTANER ID)
(C)Copyright 1996-2014 SAKURA Internet Inc.
79 WordPressとMy SQLのコンテナを つなぎ、WordPressを動かす
80 上記のコマンドを入力すると、色々とダウンロードがはじまる。 docker run wordpress
81 エラーが出てWordPressが起動できない、どうやらMySQLが必要な様子。 というわけで、MySQLのコンテナを持ってくる。
82 「docker pull [イメージ名]」でコンテナのダウンロードがはじまります。 ちなみに「docker run [イメージ名]」をした時にローカルにコンテナイメー ジがないと自動的にダウンロードされます docker pull
mysql
83 わかりやすいように –eを利用することでMySQLのパスワードの設定が可能 となります。(パスワード)には、任意のパスワードを入れてください docker run --name mysql -e MYSQL_ROOT_PASSWORD=(パスワード)
-d mysql
84 上記のコマンドを入力するとWordPressが立ち上がります。「-- link」は、- -link <連携したいコンテナ名>:<エイリアス名>オプションで新しいコンテ ナを起動すると,そのコンテナ内で連携したいコンテナのポート番号やIPを 環境変数として利用できるという機能です docker run --name
wordpress --link mysql:mysql -p 80:80 wordpress
85 インストールに成功するとこんな画面が出てきます。
86
87 「-d」を指定していないので「ctrl + c」を入力すると、このコンテナ自体 も停止してしまいます。 それでは、次はバッグランドでWordPressを起動してみましょう。 ただし、同じ名前のコンテナ(-- nemae以下)は作れないので、名前を変え てみましょう。
88 上記のコマンドを入力するとWordPressが起動します。起動するのを確認し たら、docker killで落としてみましょう。 docker run --name wordpress2 -d --link
mysql:mysql -p 80:80 wordpress
(C)Copyright 1996-2014 SAKURA Internet Inc.
・「Docker run」をコマンドを叩くとDocker イ メージからDocker コンテナが作られる ・Dockerイメージは読み込みのみ可能(read- only)。変更はできない。 ・Dockerコンテナは、読み書きができるファイル システム 90
91 本日はDocker fileからDockerイメージを作る「docker build」を試します ・docker commit → コンテナからDocker イメージを作る。 ・docker
build → Docker fileからDockerイメージを作る。 ・docker import → Base imageからDockerイメージをつくる。
92 このコマンドを入力すると、過去に利用したDockerイメージが表示されます docker images
93 Dockerfileを利用して、 Dockerイメージを作る。
・DockerfileはDockerイメージを作るためのレシ ピのようなものです。 ・ Dockerfileは作成するDockerイメージの内容を テキスト形式で記述します。 ・作成したテキストファイルはdocker buildコマ ンドで読み込んでDockerイメージの作成を実行し ます。 94
95 Dockerfileをvimで書いてみます「myimages」というフォルダを作ってvim でDockerfileという名前のファイルを作製します。 mkdir myimage cd myimage (1) (2) vim
Dockerfile (2)
96 「a」を押して入力モード上記の三行を入力する。入力が終わったら、Escで コマンドモードに戻った後「:wq」で保存する。 FROM ubuntu RUN apt-get update RUN apt-get
install -y wget
▪docker build コマンド → DockerfileからDockerイメージを作る ▪構文 docker build –t <Dockerイメージ名>:<タグ名><Dockerfile
を配置するディリクトリ> 97
98 dockerビルドコマンドを入力して、Dockerイメージを作成してください。 docker build -t myimage .
99 Successfully built <イメージID>が出れば、イメージの作成成功
100 作成したイメージは上記のコマンドから実行できます。 docker run -it myimage bash
101 Docker Compose
102 Docker Composeは、複数のコンテナか ら構成するサービスを従来よりも簡単に 構築できるツールです。 従来はコンテナを作成するには、いちい ち「docker run」しなければならなかっ たのが、コマンド1発で複数のコンテナ を利用したサービスを構築できます。
103 Docker Composeを利用して Zabbix 3.0の環境を構築する
104 上記のコマンドを入力して、Docker Composeのバイナリをセットする curl -L https://github.com/docker/compose/releases/down load/1.6.2/docker-compose-`uname -s`-`uname -m` >
/usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
105 「docker-compose version」を入力すると、Docker composeのバージョ ンが表示される、正しくインストールされれば、このコマンドでバージョン 情報が表示される。 docker-compose version
106 本来であれば、作業用のディレクトリの中に「docker-compose.yaml」を 用意する必要があるのですが、今回は事前に私の方で作成したので、そちら をクローンしてください。クローンが終わったら「zabbix3」に移動します。 git clone https://github.com/wslash/zabbix3.git cd zabbix3
107 先ほど作成したディレクトリ「zabbix3」の中で「docker-compose pull」 を入力。Zabbixに必要なイメージをダウンロードします。 docker-compose pull
108 エラーが出ていなければ「docker images」を入力して「zabbix-3.0」と 「zabbix-db-mariadb」のイメージが取得できているか確認をする。 docker images
109 エラーが出ていなければ「docker images」を入力して「zabbix-3.0」と 「zabbix-db-mariadb」のイメージが取得できているか確認をする。
110 イメージを取得できていれば「docker-compose up -d」を入力してZabbix 起動に必要な複数のコンテナを立ち上げます。 docker-compose up -d
111 「docker-compose up -d」でコンテナを立ち上げた後「docker ps」で、 正常に動作しているか確認する。 docker ps
112 正常に動作していれば、ブラウザにサーバのIPアドレスを入力すれば、Zabbix のロ グイン画面が表示されます。ID: Admin 、 Password: zabbix でログインした後、パス ワードを変更してください。
DockerとDocker Composeを利用すると、 すぐに検証環境が利用できて便利 113
114 前佛さんがQiitaに書かれている「Zabbix 3.0をDocker Composeで一度に実行する方 法」が詳しいので、そちらもご確認ください。 http://qiita.com/zembutsu/items/686b99be90d72688aee8
ご静聴ありがとうございました。 「さくらのクラウド 2万円クーポン」を配布いたします。 今日の復習にご利用ください 115