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
110
0
Share
Dockerを触ってみよう
Cloud Natice Okayama #01 で発表したスライドです。
akira345
April 20, 2019
More Decks by akira345
See All by akira345
ビジネス要件から逆算するマイクロサービスアーキテクチャ選定の「思考プロセス」
akira345
0
62
インシデント対応
akira345
0
390
えれくら!〜電気電子工作系制作・交流会〜#29
akira345
0
35
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
130
AWSデプロイツール紹介
akira345
0
76
40歳でやったこと
akira345
0
57
回路を読むために必要なこと
akira345
0
43
おれのAWSがこんなに辛い訳がない!!
akira345
0
50
アラフォー世代が基板を作ってみた(公開用)
akira345
0
170
Other Decks in Technology
See All in Technology
仕様通り動くの先へ。Claude Codeで「使える」を検証する
gotalab555
8
3.1k
Hello UUID
mimifuwacc
0
130
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
160
New CBs New Challenges
ysuzuki
1
160
ストライクウィッチーズ2期6話のエイラの行動が許せないのでPjMの観点から何をすべきだったのかを考える
ichimichi
1
310
暗黙知について一歩踏み込んで考える - 暗黙知の4タイプと暗黙考・暗黙動へ
masayamoriofficial
0
780
システムは「動く」だけでは足りない 実装編 - 非機能要件・分散システム・トレードオフをコードで見る
nwiizo
1
240
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
4
14k
プロダクトを育てるように生成AIによる開発プロセスを育てよう
kakehashi
PRO
1
890
TanStack Start エコシステムの現在地 / TanStack Start Ecosystem 2026
iktakahiro
1
360
Webアクセシビリティは“もしも”に備える設計
tomokusaba
0
170
AIドリブン開発の実践知 ― AI-DLC Unicorn Gym実施から見えた可能性と課題
mixi_engineers
PRO
0
120
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
510
Art, The Web, and Tiny UX
lynnandtonic
304
21k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
670
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Scaling GitHub
holman
464
140k
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はおす すめ。 環境をゲームのソフトのように扱える。 コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。
サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ 一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。