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
310
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
450
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
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
480
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
200
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
300
最近評価が難しくなった
maroon8021
0
180
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
1
810
Why is RC4 still being used?
tamaiyutaro
0
280
そのタスクオンスケですか?
poropinai1966
0
120
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
170
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
330
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
170
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
840
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
エンジニアに許された特別な時間の終わり
watany
107
250k
Balancing Empowerment & Direction
lara
6
1.2k
Building an army of robots
kneath
306
46k
Writing Fast Ruby
sferik
630
63k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
It's Worth the Effort
3n
188
29k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Paper Plane
katiecoart
PRO
1
52k
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]