SlideShare a Scribd company logo
‹#›
vagrant/docker 打造
跨平台团队开发环境
移动事业部微信组 谢⼀一军
‹#›
谁!
speaker!
让鄙⼈人简单⾃自我介绍⼀一下
‹#›
关于我
连续创业者!
PHP、Golang、lua!
!
!
blog:http://www.stutostu.com/
‹#›
1. Vagrant介绍和使⽤用!
2. docker介绍和使⽤用!
3. 总结
‹#›
Vagrant
‹#›
⼀一款⽤用来构建跨平台虚拟开发环境的⼯工具
‹#›
⼀一个提供可配置、可再⽣生、便携的⼯工作环
境的⼯工具
‹#›
这尼玛是神⻢马意思。。。
‹#›
Vagrant原理
‹#›
Vagrant是什么
‹#›
为什么要⽤用vagrant?
‹#›
without vagrant
‹#›
‹#›
1. 易于创建(vagrant up)!
2. ⽅方便打包分发(vagrant package)!
3. 像git⼀一样管理开发环境(vagrantFile)
with vagrant
‹#›
可以解决我们什么问题?
‹#›
1. 统⼀一/跨平台团队开发环境!
2. 和⽣生产环境⼀一致OS!
3. 减少新同事上⼿手时间!
4. 不再有“为什么我这跑不了”
‹#›
怎么做?
‹#›
1.我们可以通过 Vagrant 封装⼀一个 Linux 的开发环
境,分发给团队成员。成员可以在⾃自⼰己喜欢的桌
⾯面系统(Mac/Windows/Linux)上开发程序,代码
却能统⼀一在封装好的环境⾥里运⾏行。!
2.通过内⺴⽹网FTP托管box!
3.通过git管理vagrantFile(*)
‹#›
好像不错的样⼦子。。。
‹#›
如何使⽤用
‹#›
1.安装 VirtualBox!
!
下载地址:https://www.virtualbox.org/wiki/Downloads !
!
* 根据提⽰示安装即可
* 虽然 Vagrant 也⽀支持 VMware,不过 VMware 是收费的,对应的
Vagrant 版本也是收费的
‹#›
2. 安装 Vagrant!
!
下载地址:http://downloads.vagrantup.com/ !
*根据提⽰示安装即可!
!
安装完成后
还需要下载官⽅方封装好的基础镜像:

http://www.vagrantbox.es/
‹#›
3. 添加镜像到 Vagrant!
!
$ vagrant box add $YOUR_NAME $BOX_PATH!
!
!
$YOUR_NAME是我们给这个 box 命名的名字,
$BOX_PATH是box⽂文件路径(⽂文件路径,⺴⽹网络路径均可)
‹#›
4. 初始化开发环境!
$ mkdir dev # 不解释!
$ cd dev # 不解释!
# 初始化!
$ vagrant init hahaha!
# 启动环境!
$ vagrant up!
# 使⽤用ssh登陆,windows需要ssh客户端连接,⽤用户密码均为
vagrant,root密码为vagrant!
$ vagrant ssh !
!
‹#›
5. vagrantFile常⽤用配置说明
‹#›
6. 打包分发!
当你配置好开发环境后,退出并关闭虚拟机。在终端⾥里对
开发环境进⾏行打包,运⾏行:!
$ vagrant package!
!
打包完成后会在当前⺫⽬目录⽣生成⼀一个 package.box 的⽂文件,
将这个⽂文件传给其他⽤用户,其他⽤用户只要添加这个 box 并
⽤用其初始化⾃自⼰己的开发⺫⽬目录就能得到⼀一个⼀一模⼀一样的开发
环境了(共享⽂文件夹内容不会打包)
‹#›
其他常⽤用命令
$ vagrant box add <boxName> <boxPath> # 初始化 !
$ vagrant init <boxName> # 初始化 !
$ vagrant up # 启动虚拟机 !
$ vagrant halt # 关闭虚拟机 !
$ vagrant reload # 重启虚拟机 !
$ vagrant ssh # SSH ⾄至虚拟机 !
$ vagrant status # 查看虚拟机运⾏行状态 !
$ vagrant destroy # 销毁当前虚拟机
‹#›
注意事项
# Apache 配置添加:!
EnableSendfile off!
!
# Nginx 配置添加:!
sendfile off;!
!
# 重启请使⽤用,否则会出现重启后,共享⽂文件夹⽆无法挂载的情况!
$ vagrant reload
‹#›
Show time!
‹#›
Docker
‹#›
Docker是什么
Docker是⼀一个部署⼯工具。它⽤用 Linux 内核的资源分离机制建⽴立独⽴立的
Docker Container 来提供 ⼀一个抽象层,让你可以下⼏几个指令,透过⼏几个
Container 就将你的服务、应⽤用部署起来。	

!
!
例如说要部署⼀一个 web app,你可能只需要两个 Container ,⼀一个跑 psql ,
⼀一个跑 nginx,共需要 两个指令。
‹#›
Docker是什么
‹#›
对⽐比传统虚拟机
‹#›
安装Docker
ubuntu:http://yeasy.gitbooks.io/docker_practice/
content/install/ubuntu.html!
!
centos:http://yeasy.gitbooks.io/docker_practice/
content/install/centos.html
‹#›
获取镜像
可以使⽤用 docker pull 命令来从仓库获取所需要的镜像。!
$ sudo docker pull ubuntu:12.04!
!
上⾯面的命令是从 Docker Hub 仓库下载⼀一个 Ubuntu 12.04 操作系统
的镜像。!
!
使⽤用该镜像创建⼀一个容器,让其中运⾏行 bash 应⽤用:!
$ sudo docker run -t -i ubuntu:12.04 /bin/bash!
‹#›
创建容器
创建⼀一个容器,让其中运⾏行 bash 应⽤用:!
$ sudo docker run -t -i ubuntu:12.04 /bin/bash!
!
或者以守护进程⽅方式运⾏行!
$ sudo docker run -d -p 80:80 -v /www:/var/www ubuntu:12.04 /sbin/
init!
!
-p参数是指定端⼝口转发,-v参数是指定共享⽂文件夹!
‹#›
创建镜像
安装完所需的服务后,可以使⽤用commit提交容器来创建⼀一个镜像!
$ sudo docker commit $containerId!
!
容器id可以使⽤用ps命令获得!
$ sudo docker ps -lq!
这样可以获取到最新的容器id
‹#›
常⽤用命令
docker pull 下载 image!
docker push 上传 image!
docker commit 由容器製作新的镜像!
docker diff 观看容器的改变!
docker run 创建容器并运⾏行!
docker ps 查看⺫⽬目前的容器!
docker images 查看所有镜像!
docker build 由DockerFile创建镜像!
...
‹#›
注意事项
1. 不要使⽤用程序内置daemon⽅方式运⾏行!
2. 把服务设置成开机启动/写好启动脚本
‹#›
Show time again!
‹#›
总结
‹#›
docker和vagrant有什么不同
‹#›
个⼈人看法
1. Vagrant适合⽤用于管理团队开发环境!
2. Docker更适⽤用于个⼈人开发!
3. 开发环境有频繁变动需求的团队,可以结合Vagrant和Docker来⼀一
起使⽤用
‹#›
参考资料
• https://docs.vagrantup.com/v2/ (官⽅方⽂文档) !
• http://segmentfault.com/a/1190000000264347 (使⽤用 Vagrant 打造跨
平台开发环境)!
• https://www.gitbook.com/book/yeasy/docker_practice(Docker —— 从
⼊入⻔门到实践)
‹#›
Q&A
‹#›

More Related Content

Similar to 使用 Vagrant/Docker 打造团队跨平台开发环境

模块化和组件化Css
模块化和组件化Css模块化和组件化Css
模块化和组件化Css
Wu tianhao
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
Miles Chou
 
Docker技术介绍
Docker技术介绍Docker技术介绍
Docker技术介绍
LI jeanphorn
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
Li Yi
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
Shengyou Fan
 
OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030
Rex Tsai
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
Philip Zheng
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
Yu Lung Shao
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
Miles Chou
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验
zhen chen
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
謝 宗穎
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探
仲昀 王
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
Philip Zheng
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
Perry Tsai
 
Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走政億 林
 
Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走
jimmy lin
 
凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學
Shengyou Fan
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
Layne Peng
 

Similar to 使用 Vagrant/Docker 打造团队跨平台开发环境 (20)

模块化和组件化Css
模块化和组件化Css模块化和组件化Css
模块化和组件化Css
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
 
Docker技术介绍
Docker技术介绍Docker技术介绍
Docker技术介绍
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
 
OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030OpenLab.Taipei #2 PORTA2030
OpenLab.Taipei #2 PORTA2030
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走
 
Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走
 
凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學凌波微步:wagon + VS Code 的輕功哲學
凌波微步:wagon + VS Code 的輕功哲學
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
 

使用 Vagrant/Docker 打造团队跨平台开发环境