使用 vagrant/docker 打造团队跨平台开发环境

46
‹#› vagrant/docker 打造 跨平台团队开发环境 移动事业部微信组 谢军

Upload: -

Post on 24-Jan-2018

3.864 views

Category:

Technology


0 download

TRANSCRIPT

‹#›

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是什么

‹#›

对⽐比传统虚拟机

‹#›

安装Dockerubuntu: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

‹#›