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
Instant learning docker
Search
Fumiaki MATSUSHIMA
May 18, 2017
Programming
250
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Instant learning docker
Fumiaki MATSUSHIMA
May 18, 2017
More Decks by Fumiaki MATSUSHIMA
See All by Fumiaki MATSUSHIMA
Learning from performance improvements on GraphQL Ruby
mtsmfm
1
1.4k
Ruby で作る Ruby (物理)
mtsmfm
1
290
GraphQL Ruby benchmark
mtsmfm
1
920
タイムアウトにご用心 / Timeout might break application state
mtsmfm
6
2.7k
Build REST API with GraphQL Ruby
mtsmfm
0
390
GraphQL Ruby をちょっとだけ速くした / Make graphql-ruby faster a bit
mtsmfm
1
790
Gaming PC on GCP
mtsmfm
0
810
How to introduce GraphQL to an existing React-Redux application
mtsmfm
1
320
Canary release in StudySapuri
mtsmfm
0
3.3k
Other Decks in Programming
See All in Programming
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.8k
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.1k
Oxlintはいいぞ(続)
yug1224
1
450
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
1.9k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
520
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
210
ALB ログから Trace を気合で繋げる技術
fohte
5
520
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
490
typoなんかねぇよ
raspython3
0
550
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
110
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
310
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
We Have a Design System, Now What?
morganepeng
55
8.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Transcript
(株)永和システムマネジメント @mtsmfm 松島 史秋 シュッと学ぶ Docker
松島 史秋 GitHub, Twitter @mtsmfm
興味あるもの - Docker - GraphQL
https://www.meetup.com/ja-JP/GraphQL-Tokyo/
勢いで作った
None
21 7
None
None
大事なことは 最初に
百聞は一見に 如かず
$ docker run \ hello-world
習うより慣れろ
想定読者 - Docker コマンドを 叩いたことがない - Git はわかる
1. Docker とは 2. なぜ必要か 3. 初手の使いどころ
Docker とは
雑に言うと
/ 以下全ファイルを $ git commit
そのファイル だけの世界で 指定したコマンドを 実行
None
hello-world という名前の Git リポジトリから リポジトリに設定された デフォルトのコマンド (/hello) を実行する
そのファイル だけの世界を 見てみる
None
hello-world リポジトリについてのメタ情報 コミット
コミットの中身 (/ 以下の全て)
/hello だけ
ほんとに?
Git リポジトリを 見に行こう
https://hub.docker.com/_/hello-world/
Dockerfile
~= git commit の 手順書
https://github.com/docker-library/hello-world/blob/bdee60d7ff6b98037657dc34a10e9ca4f fd6785f/hello-world/Dockerfile git init hello というファイ ルを / 以下に置いて コミット
デフォルトのコマンドの設定
たしかに /hello だけっぽい
None
hello-world という名前の Git リポジトリから /hello を実行する
None
bash どころか ls すらない
ubuntu を見てみる
None
https://github.com/tianon/docker-brew-ubuntu-core/blob/fb06b03251856d9a3c143332398512b3895e33b6/xenial/ Dockerfile git init 配布されている Ubuntu のファイルを 展開してまるっとコミット rm, sed,
mkdir など コマンドを 実行して起きたファイルの 変更をコミット
https://github.com/tianon/docker-brew-ubuntu-core/blob/fb06b03251856d9a3c143332398512b3895e33b6/xenial/ Dockerfile 1 2 3 4 5
1 2 3 4 5
None
None
なるほど 全部っぽい
None
None
作ったファイルが消えた?
おさらい
hello-world という名前の Git リポジトリから /hello を実行する
ubuntu という名前の Git リポジトリから bash を実行する ubuntu という名前の Git リポジトリから
bash を実行する
ubuntu という名前の Git リポジトリから bash を実行する ubuntu という名前の Git リポジトリから
bash を実行する どちらも一から実行
ubuntu docker run -it \ ubuntu bash touch hoge ls
hoge docker run -it \ ubuntu bash
ubuntu docker run -it \ ubuntu bash touch hoge ls
hoge docker run -it \ ubuntu bash Image Container
1. Docker とは 2. なぜ必要か 3. 初手の使いどころ
なぜ Docker が 必要か
https://www.docker.com/what-docker
”俺のマシンでは 動いたよ” 問題を無くす
- Ruby はどこにどうやって インストールされている? - 他に入っているものは? - ディレクトリ構成は? - 実行ユーザは?
しれっとあったりする依存
$ rails db:structure:load
https://github.com/rails/rails/blob/f73b845610931ddf0 3c756d804982776a3cc69a4/activerecord/lib/active_r ecord/tasks/postgresql_database_tasks.rb#L80 psql コマンドに依存している
プロジェクトで バージョン揃ってる?
アプリケーション サーバを動かすまで
1. 手元のマシンで開発する 2. 本番用のマシンを用意する 3. OS を入れる 4. アプリケーションの動作に必要なパッ ケージのインストールをする
5. デプロイ用のセットアップをする 6. デプロイする
B.C. (Before Container)
1. 手元のマシンで開発する 2. 本番用のマシンを用意する 3. OS を入れる 4. アプリケーションの動作に必要なパッ ケージのインストールをする
5. デプロイする 物理 CD 職人の手作業 職人の手作業
1. 手元のマシンで開発する 2. 本番用のマシンを用意する 3. OS を入れる 4. アプリケーションの動作に必要なパッ ケージのインストールをする
5. デプロイする IaaS OS のイメージ Capistrano Ansible
こういったツールは 今動いてる環境に 「うまく継ぎ足す」 ためのもの
ゼロから流すときと 今動いているものに 変更を加えるとき
全く同じになるかは わからない
特にロールバック
A.C. (After Container)
1. 手元のマシンで開発する 2. 本番用のマシンを用意する 3. OS を入れる 4. アプリケーションの動作に必要なパッ ケージのインストールをする
5. デプロイする IaaS Docker が動く何か Docker のクラスタ 管理する何か Docker
/ 以下をまるっと 入れかえるから 現在の状態を 気にしないで済む
/ 以下をまるっと 入れかえるから ロールバックも確実
Docker の Image と それを管理する 環境さえあれば それでいい
やりたいことは だいたい PaaS みたいなもの
1. Docker とは 2. なぜ必要か 3. 初手の使いどころ
1. 手元のマシンで開発する 2. 本番用のマシンを用意する 3. OS を入れる 4. アプリケーションの動作に必要なパッ ケージのインストールをする
5. デプロイする IaaS Docker が動く何か Docker のクラスタ 管理する何か Docker ここも Docker であるべき
開発環境は あまり Docker に やさしくない
エディタのサポート が乏しい
使いやすいところ
1. DB
DB のバージョン 揃ってますか
$ docker run \ -p 5432:5432 \ postgres:9.6.3 たったこれだけで 起動する
がんばって インストールする 必要などない
2. Selenium
https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE
PhantomJS is dead
次は Headless Chrome
次は Headless Chrome 普通に Chrome 使え
PhantomJS の何が よかったか - (capybara-webkit より) インス コが楽 - ヘッドレスで邪魔にならない
PhantomJS の何が つらいか - PhantomJS でテストを通すため のハックが要るときが ある
PhantomJS が 一番確認されてる サポートブラウザに なっている!!!
Chrome が 邪魔にならずに 楽に使えれば それでいいはず
$ docker run \ -p 5900:5900 \ selenium/standalone-chrome-debug たったこれだけで起動する macOS
だと finder から vnc://localhost:5900 でパスワード secret で 中が見れる
https://speakerdeck.com/eileencodes/building-the-new-rails-syste m-test-framework?slide=48
https://github.com/mtsmfm/rails-system-test-example
Headless Chrome だと 画面に描画しない分速いかも しれないが 速度で優位に立てないなら 微妙に違うブラウザを 使う意味はない
まとめ - Docker は / 以下を git commit 管理しているようなもの -
Docker によって今すぐにでも楽 になる部分があるよ
開発環境がやさしくないのは Docker 使うのを サボってる人が多いから としか思えない
https://atom.io/packages/docker-linter-rubocop
https://github.com/mtsmfm/languageserver-ruby
Credits Background pattern from subtlepatterns.com Emoji provided free by Emoji
One