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
用 Vagrant 與 Docker 拯救世界
Search
Gea-Suan Lin
May 16, 2015
Technology
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
用 Vagrant 與 Docker 拯救世界
Gea-Suan Lin
May 16, 2015
More Decks by Gea-Suan Lin
See All by Gea-Suan Lin
High Availability Vault Service on AWS Environment
gslin
0
7.3k
用 AWS CodeDeploy 解決程式佈署
gslin
0
460
MySQL to NoSQL & Search Engine
gslin
0
2.2k
Startup IT infrastructure: Developing and Working with AWS
gslin
8
3.8k
Talk about Percona XtraDB Cluster
gslin
0
210
API Design Optimized for Mobile Platform
gslin
9
8.8k
Use Facebook::Graph to write desktop application
gslin
2
520
COSCUP 2012 - MySQL System Stability
gslin
17
12k
MySQL System Stability
gslin
4
6k
Other Decks in Technology
See All in Technology
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
180
事業価値と Engineering 2026年度版
recruitengineers
PRO
36
18k
サイバー捜査員研修(後半)
nomizone
1
680
Pavlokで始める電撃駆動開発
sgrsn
0
170
SmartHR Engineering Team Deck
smarthr
0
190
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
380
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
4
1.2k
PLaMoを毎日の開発で使い育てていく
pfn
PRO
0
180
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
200
Cursor Meetup Sapporo - Cursor物語 続編
cocacola917
0
120
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
130
Flutterをカメラで動かしたかった話
sony
0
120
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
440
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
250
Become a Pro
speakerdeck
PRO
31
6.1k
First, design no harm
axbom
PRO
2
1.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Making the Leap to Tech Lead
cromwellryan
135
10k
Designing for humans not robots
tammielis
254
26k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
830
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
⽤用 Vagrant 與 Docker 拯救世界 Gea-Suan Lin KKBOX Technologies
Vagrant
None
VAGRANTFILE_API_VERSION = "2" ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64"
! config.vm.define "db1" do |db| db.vm.hostname = "db1" db.vm.provision "shell", path: "db1.sh" db.vm.network "private_network", ip: "192.168.50.101" end ! config.vm.define "db2" do |db| db.vm.hostname = "db2" db.vm.provision "shell", path: "db2.sh" db.vm.network "private_network", ip: "192.168.50.102" end end
⽤用 Ruby 寫的
虛擬化管理⼯工具
包括了...
Image
Network
Environment
Script
…
早期只⽀支援 VirtualBox
後來⽀支援 KVM、 VMware 等等⽅方案
包括了今天要提到的 Docker
好處
可重複測試
每次環境相同
設定簡單
Docker
None
Linux 上輕量級的 容器管理⼯工具
(微軟也打算要在 Windows 上實作) http://www.zdnet.com/article/docker-container-support- coming-to-microsofts-next-windows-server-release/
Microservices
優點
啟動速度快
節省資源
缺點
⺫⽬目前只有 Linux 平台
無法指定容器的 IP 位置 https://github.com/docker/docker/issues/6743
Vagrant + Docker
⽤用途
開發測試環境
Continuous Integration
設定範例
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker" VAGRANTFILE_API_VERSION = "2" ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "db1" do |db| db.vm.provision "shell", path: "db1.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker, override| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end ! config.vm.define "db2" do |db| db.vm.provision "shell", path: "db2.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker" VAGRANTFILE_API_VERSION = "2" ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "db1" do |db| db.vm.provision "shell", path: "db1.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker, override| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end ! config.vm.define "db2" do |db| db.vm.provision "shell", path: "db2.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker" VAGRANTFILE_API_VERSION = "2" ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "db1" do |db| db.vm.provision "shell", path: "db1.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker, override| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end ! config.vm.define "db2" do |db| db.vm.provision "shell", path: "db2.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker" VAGRANTFILE_API_VERSION = "2" ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "db1" do |db| db.vm.provision "shell", path: "db1.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker, override| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end ! config.vm.define "db2" do |db| db.vm.provision "shell", path: "db2.sh" db.vm.synced_folder "shared/", "/srv/shared" db.vm.provider "docker" do |docker| docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end
Summary
We’re hiring
[email protected]