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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Fumiaki MATSUSHIMA
May 18, 2017
Programming
2
230
Instant learning docker
Fumiaki MATSUSHIMA
May 18, 2017
Tweet
Share
More Decks by Fumiaki MATSUSHIMA
See All by Fumiaki MATSUSHIMA
Learning from performance improvements on GraphQL Ruby
mtsmfm
1
1.2k
Ruby で作る Ruby (物理)
mtsmfm
1
250
GraphQL Ruby benchmark
mtsmfm
1
870
タイムアウトにご用心 / Timeout might break application state
mtsmfm
6
2.6k
Build REST API with GraphQL Ruby
mtsmfm
0
370
GraphQL Ruby をちょっとだけ速くした / Make graphql-ruby faster a bit
mtsmfm
1
760
Gaming PC on GCP
mtsmfm
0
780
How to introduce GraphQL to an existing React-Redux application
mtsmfm
1
290
Canary release in StudySapuri
mtsmfm
0
3.2k
Other Decks in Programming
See All in Programming
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
570
CSC307 Lecture 03
javiergs
PRO
1
480
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
270
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Graviton と Nitro と私
maroon1st
0
180
ゆくKotlin くるRust
exoego
1
220
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
180
SourceGeneratorのススメ
htkym
0
160
CSC307 Lecture 02
javiergs
PRO
1
770
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
760
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.9k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Automating Front-end Workflow
addyosmani
1371
200k
Skip the Path - Find Your Career Trail
mkilby
0
50
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Building AI with AI
inesmontani
PRO
1
660
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
エンジニアに許された特別な時間の終わり
watany
106
230k
The agentic SEO stack - context over prompts
schlessera
0
610
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
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