Vagrant Docker Gea-Suan Lin KKBOX Technologies Vagrant - - PowerPoint PPT Presentation

vagrant docker
SMART_READER_LITE
LIVE PREVIEW

Vagrant Docker Gea-Suan Lin KKBOX Technologies Vagrant - - PowerPoint PPT Presentation

Vagrant Docker Gea-Suan Lin KKBOX Technologies Vagrant VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64"


slide-1
SLIDE 1

⽤甩 Vagrant 與 Docker 拯救世界

Gea-Suan Lin KKBOX Technologies

slide-2
SLIDE 2

Vagrant

slide-3
SLIDE 3
slide-4
SLIDE 4

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

slide-5
SLIDE 5

⽤甩 Ruby 寫的

slide-6
SLIDE 6

虛擬化管理⼯左具

slide-7
SLIDE 7

包括了...

slide-8
SLIDE 8

Image

slide-9
SLIDE 9

Network

slide-10
SLIDE 10

Environment

slide-11
SLIDE 11

Script

slide-12
SLIDE 12

slide-13
SLIDE 13

早期只⽀攰援 VirtualBox

slide-14
SLIDE 14

後來⽀攰援 KVM、 VMware 等等⽅斺案

slide-15
SLIDE 15

包括了今天要提到的 Docker

slide-16
SLIDE 16

好處

slide-17
SLIDE 17

可重複測試

slide-18
SLIDE 18

每次環境相同

slide-19
SLIDE 19

設定簡單

slide-20
SLIDE 20

Docker

slide-21
SLIDE 21
slide-22
SLIDE 22

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

slide-23
SLIDE 23

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

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

slide-24
SLIDE 24

Microservices

slide-25
SLIDE 25

優點

slide-26
SLIDE 26

啟動速度快

slide-27
SLIDE 27

節省資源

slide-28
SLIDE 28

缺點

slide-29
SLIDE 29

⺫⽬盯前只有 Linux 平台

slide-30
SLIDE 30

無法指定容器的 IP 位置

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

slide-31
SLIDE 31

Vagrant + Docker

slide-32
SLIDE 32

⽤甩途

slide-33
SLIDE 33

開發測試環境

slide-34
SLIDE 34

Continuous Integration

slide-35
SLIDE 35

設定範例

slide-36
SLIDE 36

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

slide-37
SLIDE 37

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

slide-38
SLIDE 38

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

slide-39
SLIDE 39

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

slide-40
SLIDE 40

Summary

slide-41
SLIDE 41

We’re hiring recruit@kkbox.com