Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dockerを触ってみよう
Search
akira345
April 20, 2019
Technology
0
86
Dockerを触ってみよう
Cloud Natice Okayama #01 で発表したスライドです。
akira345
April 20, 2019
Tweet
Share
More Decks by akira345
See All by akira345
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
83
AWSデプロイツール紹介
akira345
0
49
40歳でやったこと
akira345
0
27
回路を読むために必要なこと
akira345
0
17
おれのAWSがこんなに辛い訳がない!!
akira345
0
24
アラフォー世代が基板を作ってみた(公開用)
akira345
0
140
ESP-WROOM-02でプチIoT
akira345
0
110
トランジスタの働き(超入門編)
akira345
0
19
基板から回路図を起こしてみよう
akira345
0
1.4k
Other Decks in Technology
See All in Technology
1人1サービス開発しているチームでのClaudeCodeの使い方
noayaoshiro
2
570
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.5k
20251222_next_js_cache__1_.pdf
sutetotanuki
0
170
Snowflake だけで実現する “自立的データ品質管理” ~Data Quality Monitoring 解説 ~@ BUILD Meetup: TOKYO 2025
ryo_suzuki
0
130
最近の生成 AI の活用事例紹介
asei
1
100
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
760
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
200
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
320
202512_AIoT.pdf
iotcomjpadmin
0
130
AI with TiDD
shiraji
1
260
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
110
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
230
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Facilitating Awesome Meetings
lara
57
6.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Designing Experiences People Love
moore
143
24k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
31
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to make the Groovebox
asonas
2
1.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
1.9k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
140
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はおす すめ。 環境をゲームのソフトのように扱える。 コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。
サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ 一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。