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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
620
えれくら!〜電気電子工作系制作・交流会〜#29
akira345
0
72
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
180
AWSデプロイツール紹介
akira345
0
100
40歳でやったこと
akira345
0
76
回路を読むために必要なこと
akira345
0
81
おれのAWSがこんなに辛い訳がない!!
akira345
0
75
Other Decks in Technology
See All in Technology
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
AIコーディングはじめました
miso
0
170
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
120
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
320
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.7k
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
130
The future of architectural work
ufried
0
190
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
120
AI時代における医療情報システムのセキュリティ / Security of Healthcare IT Systems in the AI Era
henryofficial
0
130
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
130
eBPF 簡介 2026 版
shunghsiyu
0
190
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
4 Signs Your Business is Dying
shpigford
187
23k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
Music & Morning Musume
bryan
48
7.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
440
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.7k
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
240
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はおす すめ。 環境をゲームのソフトのように扱える。 コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。
サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ 一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。