Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dockerを触ってみよう
Search
akira345
April 20, 2019
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dockerを触ってみよう
Cloud Natice Okayama #01 で発表したスライドです。
akira345
April 20, 2019
More Decks by akira345
See All by akira345
回路設計のバイブコーディング
akira345
0
260
ビジネス要件から逆算するマイクロサービスアーキテクチャ選定の「思考プロセス」
akira345
0
100
インシデント対応
akira345
0
610
えれくら!〜電気電子工作系制作・交流会〜#29
akira345
0
72
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
180
AWSデプロイツール紹介
akira345
0
100
40歳でやったこと
akira345
0
76
回路を読むために必要なこと
akira345
0
78
おれのAWSがこんなに辛い訳がない!!
akira345
0
75
Other Decks in Technology
See All in Technology
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.7k
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
620
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
3.2k
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
520
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
210
`go get`したらELFが降ってきた件
taiyow
0
180
re:Invent の去年のスケジュールを公開します!
miu_crescent
PRO
0
310
eBPF 簡介 2026 版
shunghsiyu
0
190
超⼩型・多⾔語検索モデル Bekko Embedding
hotchpotch
1
110
お客様の「やりたい」の先を見通す合意形成プロセス ~裏にある課題と不安を解きほぐすコツ~
yukakoseki
0
110
Featured
See All Featured
Side Projects
sachag
456
43k
Paper Plane
katiecoart
PRO
5
55k
Why Our Code Smells
bkeepers
PRO
340
58k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
560
30 Presentation Tips
portentint
PRO
1
460
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
470
Chasing Engaging Ingredients in Design
codingconduct
0
390
The agentic SEO stack - context over prompts
schlessera
0
1k
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はおす すめ。 環境をゲームのソフトのように扱える。 コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。
サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ 一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。