Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
用 Vagrant 與 Docker 拯救世界
Search
Gea-Suan Lin
May 16, 2015
Technology
330
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
480
MySQL to NoSQL & Search Engine
gslin
0
2.3k
Startup IT infrastructure: Developing and Working with AWS
gslin
8
3.8k
Talk about Percona XtraDB Cluster
gslin
0
220
API Design Optimized for Mobile Platform
gslin
9
8.9k
Use Facebook::Graph to write desktop application
gslin
2
520
COSCUP 2012 - MySQL System Stability
gslin
17
12k
MySQL System Stability
gslin
4
6.1k
Other Decks in Technology
See All in Technology
分析AIエージェントを育てる、動く環境を育てる
codatum
0
140
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
340
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
1
750
FOSS4Gを活用した自治体業務DXの試み
470715
0
110
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
400
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
150
Futexes the good, the bad, the ugly
ennael
PRO
0
130
自律型 AI をセキュアに実装!Gemini と MIG で作る動的コード実行環境
recruitengineers
PRO
1
220
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
Deep Data Security 機能解説
oracle4engineer
PRO
2
710
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
0
120
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
4
1.1k
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
10k
What's in a price? How to price your products and services
michaelherold
247
13k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
Designing for Performance
lara
612
70k
How to Ace a Technical Interview
jacobian
280
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
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]