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
Dockerを触ってみよう
Search
akira345
April 20, 2019
Technology
0
45
Dockerを触ってみよう
Cloud Natice Okayama #01 で発表したスライドです。
akira345
April 20, 2019
Tweet
Share
More Decks by akira345
See All by akira345
アラフォー世代が基板を作ってみた(公開用)
akira345
0
100
ESP-WROOM-02でプチIoT
akira345
0
72
基板から回路図を起こしてみよう
akira345
0
1k
OSS翻訳プロジェクトに参加してみた
akira345
0
75
ジャンク解析入門
akira345
0
65
Lt駆動開発28 Windows版Dockerを試してみた。
akira345
0
52
Simの容量が気になって安眠できない
akira345
0
61
メモリと遊んでみた Pert2
akira345
0
52
DockerをGUIで使いたい!
akira345
0
56
Other Decks in Technology
See All in Technology
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
410
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
200
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
660
【LT】ソフトウェア産業は進化しているのか? #Agilejapan
takabow
0
110
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
460
Chasing the White Whale of Open Source - ROI
mrbobbytables
0
110
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
Taming you application's environments
salaboy
0
200
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
160
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.8k
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
550
Featured
See All Featured
Navigating Team Friction
lara
183
14k
Designing for Performance
lara
604
68k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
380
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
How STYLIGHT went responsive
nonsquared
95
5.2k
Bash Introduction
62gerente
608
210k
GraphQLとの向き合い方2022年版
quramy
43
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Producing Creativity
orderedlist
PRO
341
39k
What's in a price? How to price your products and services
michaelherold
243
12k
Building Your Own Lightsaber
phodgson
103
6.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
Transcript
Dockerを触ってみよう Cloud Native Okayama #01
あなた誰? • 名前:金田 晃(HN) • 趣味: • 自宅サーバ、自宅インフラ • 自宅Docker
• AWS、PHP、Ruby、etc… • 電子工作、基板づくり • ジャンク漁り • 機械の分解、故障診断と修理 • 所属: • 広島電子工作娯楽部 • えれくら! • 元PL/SQLで元AWSで元鯖缶
技術書典6に初出店してきました!! 143冊完売!!
Docker is 何? Vagrantと何が違うの? コンテナって何?JR的な奴?なんでコンテナなのにクジラなの? 調べてみたけど、BSDのJail?Solarisコンテナと何が違うの?
Dockerって止めたらデータも消えるんでしょ?そんなの役に立つの? 起動が早いらしい なんで流行っているのか分からん。XAMPP最強じゃね? コンテナで簡単にというけど、逆にカスタマイズどうするのさ。Vagrantだっ て山のように設定するぞ。 DockerのPHPとCentOSのPHPって同じなの? CronとかFTPとかSSHとかいままで出来ていた事をするにはどうすればいいの? セキュリティやパッチ当てもせずデフォ設定で動いてそれ大丈夫なん??
その気持ち、すごく良く分かるよ!!!
2016/09/03 某所発表スライドより
守・破・離という言葉があります。 守:まずは基本的なDockerの動きを見てみよう。カスタ マイズとかVagrantとかと比較せず、とにかく黙ってコピ ペで動かそう。ドキュメントを見ろ! http://docs.docker.jp/index.html 破:やってみて、いろいろ仮説を立ててみて、Qiitaなど を参考に発展させる 離:自分でDockerイメージを作ってみたり、DockerHub に上げてみたり、人に教えてみたりする。
とにかく、まずは触ってみましょう。 触って、動きを見てみましょう。 次に、動きを予測(仮説)しながら、動か してみる(証明)
Dockerをやるうえでとても重要な事 Dockerイメージ:コンテナアプリを動かすため のライブラリや設定をパック詰めしたHDDイ メージ。Dockerfileから生成される。 Dockerコンテナ:Dockerイメージをマウントし、 実際に動かした環境のこと。1つのイメージから 複数のコンテナを作ることができる。 ボリューム:Dockerコンテナ内での変更を保持 する場所。
イメージとしては・・・ Dockerイメージ:ゲームのCDROM。書き込み や変更はできない。ゲーム機というプラット フォーム上で動作する。 Dockerコンテナ:起動したゲーム。同じゲーム でもプレイ内容は異なる。 ボリューム:メモリーカードや内臓メモリ
CentOSあるある(架空の例です) WordPressを動かすぞ! 標準リポジトリでPHP、MySQL、Apacheを入れる。 データベースを覗きたいな。 phpMyAdminを入れる PHPのバージョンが古いよ!MySQLが古いよ! RemiやRPMForgeなど外部リポジトリをググって入れる。 依存関係でガリガリ汚染される(この時はたいてい気づかない)
Railsやってみたいな。 ググってrbenvな環境を作る。 Gemのインストールでライブラリ依存でコケる。nokogiri辛い・・・・ 依存パッケージを消すと、PostfixやCronなどが消し飛んだ(涙 OSのセキュリティアップデート当てないとな。 以下略・・・
Dockerはゲームのソフトみたいなもの 一つのサーバ内に異なるディストリの、アプリが動く環境がパックされたものが動作する。 Docker(CoreOS) WordPress CentOS7の環境 四角いEC Cent6の環境 MySQL phpMyAdmin
Ubuntu16の環境 Hyper-V
チュートリアルをする時間はないので・・ ここでは、Dockerに触ることを目的とし、とりあえ ずPHP公式コンテナを動かしてみましょう。 docker run -d -v "%cd%/web:/var/www/html" -p 80:80
--name okayama-php71 php:7.1-apache %cd%はコマンドプロンプトで相対パス 指定するため。LinuxやMacは多分 $PWDでいける・・と思う
チュートリアルをする時間はないので・・ 次に、PHP7.2のコンテナを動かしてみましょう。 DocumentRootは先ほどと共通にしているのがミソです docker run -d -v "%cd%/web:/var/www/html" -p 8080:80
--name okayama-php72 php:7.2-apache %cd%はコマンドプロンプトで相対パス 指定するため。LinuxやMacは多分 $PWDでいける・・と思う
このように、Dockerはカジュアルに誰かが作ったコ ンテナイメージを使って環境(コンテナ)を作るこ とができる。 でも、複数のコンテナ使うの面倒じゃない?? Docker-composeという仕組みがあるよ。
dockercompose dockercomposeは1つ以上のコンテナを作る定義を記述したもの。 (実際はかなり機能があるので、リファレンス参照のこと) docker run -d -v "%cd%/web:/var/www/html" -p 80:80
--name okayama-php71 php:7.1-apache version: ‘3’ services: php71: image: php:7.1-apache volumes: - ./web:/var/www/html ports: - 80:80 docker-compose.yml
docker-composeで書くとこんな感じ version: '3' services: php71: image: php:7.1-apache volumes: - ./web:/var/www/html
ports: - 80:80 php72: image: php:7.2-apache volumes: - ./web:/var/www/html ports: - 8081:80
どうでしょうか? ここまでで、PHPバージョンごとにアプリケーションのテストと かできそうな雰囲気ですよね? 実際には各種エクステンションを入れたりしないといけないの で、カスタムイメージを作る必要がある。 といってもさほど難しくはない。 (参考:https://bit.ly/2CIWXX5) Dockerはカジュアルに誰かが作ったコンテナイメージを使って環
境を作ることができる。 構築が大変なアプリケーションをコンテナとしてパックすれば、 便利に使える! デモとしてRedmine、Jenkins、GitBucketとバックエンド のDB含め一気に構築します。
全てDockerコンテナです。
Dockerで難しいと思うところ どのサイズでコンテナ化すればいいか悩む 基本1プロセス1コンテナらしいけど、それだと構成要素が増えすぎて管理が手間 だしなぁ・・・ 3つを超えたあたりからcomposerでも管理がカオス気味に・・ データコンテナってどの単位で作ればいいんだろう?
初期設計が難しい・・ Cronやiptablesやsyslogなど当たり前にできたことをどうすればいいのか?が悩む Docker内にユーザを作ったりSSHキーを入れたりするのはどうなんだろう??? メモリ消費やディスクIOが多い気がする。割とサクッと死ぬので実運用はちょっと怖い。 ログを監視して何かアクションを起こす系はどうするのがいいんだろう??
まとめ 開発環境など一時的な環境をサクッと作るにはDockerはおす すめ。 環境をゲームのソフトのように扱える。 コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。
サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ 一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。