41
Vagrant Docker 拯救世界 Gea-Suan Lin KKBOX Technologies

用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring [email protected]. Title: 用 Vagrant 與

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

⽤用 Vagrant 與 Docker 拯救世界

Gea-Suan Lin KKBOX Technologies

Page 2: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Vagrant

Page 3: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與
Page 4: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

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" endend

Page 5: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

⽤用 Ruby 寫的

Page 6: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

虛擬化管理⼯工具

Page 7: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

包括了...

Page 8: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Image

Page 9: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Network

Page 10: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Environment

Page 11: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Script

Page 12: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Page 13: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

早期只⽀支援 VirtualBox

Page 14: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

後來⽀支援 KVM、VMware 等等⽅方案

Page 15: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

包括了今天要提到的 Docker

Page 16: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

好處

Page 17: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

可重複測試

Page 18: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

每次環境相同

Page 19: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

設定簡單

Page 20: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Docker

Page 21: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與
Page 22: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Linux 上輕量級的 容器管理⼯工具

Page 23: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

(微軟也打算要在 Windows 上實作)

http://www.zdnet.com/article/docker-container-support-coming-to-microsofts-next-windows-server-release/

Page 24: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Microservices

Page 25: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

優點

Page 26: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

啟動速度快

Page 27: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

節省資源

Page 28: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

缺點

Page 29: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

⺫⽬目前只有 Linux 平台

Page 30: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

無法指定容器的 IP 位置

https://github.com/docker/docker/issues/6743

Page 31: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Vagrant + Docker

Page 32: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

⽤用途

Page 33: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

開發測試環境

Page 34: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Continuous Integration

Page 35: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

設定範例

Page 36: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

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 endend

Page 37: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

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 endend

Page 38: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

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 endend

Page 39: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

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 endend

Page 40: 用 Vagrant 與 Docker 拯救世界 · docker.image = "npoggi/vagrant-docker" docker.has_ssh = true end end end. Summary. We’re hiring recruit@kkbox.com. Title: 用 Vagrant 與

Summary