最近在做服务端相关的开发,由于服务机是Linux系统,所以具体开发环境就要相对应,本地代码能够及时同步到服务器进行执行。其实能够实现这个功能有多种方法像安装Vagrant、Virtualbox等,各有千秋,具体的简单比较下文有,这里先介绍Docker环境。是到,刚才聊到也是Docker的功能之一。
Docker主要有四个部分:

1、客户端;2、守护进程;3、镜像;4、容器;

Docker是基于LXC(是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。)进行扩展开发,但LXC存在的问题是难以移动 - 难以通过标准化的模板制作、重建、复制和移动 container,这里Docker 利用了AUFS(支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)的文件系统)来实现对container的快速更新。 这里的一些专业名词我最后补上百科链接。
百度百科这样介绍Docker:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
(这里让我想起OSX 沙盒机制,这也是mac很少中毒的原因之一吧。)
其中不得不说镜像和容器的关系,借个图展示:

跑docker需要服务器什么配置 docker需要什么环境_跑docker需要服务器什么配置

下面介绍一下服务端工程搭建过程:
1、安装Docker环境

MAC

https://www.docker.com/docker-mac

WINDOWS

https://www.docker.com/docker-windows

安装成功,检查docker engine,docker compose,docker machine版本号

跑docker需要服务器什么配置 docker需要什么环境_跑docker需要服务器什么配置_02


其中composer是php组建,负责组织包与包之间的依赖,在项目中通过composer.json和composer.luck进行加载及管理包。

跑docker需要服务器什么配置 docker需要什么环境_LNMP_03


2、添加开发环境镜像 curl -o centos-6.8-x86_64-php-7.1-XXX-dev.tar http://XXXXXX/docker/centos-6.8-x86_64-php-7.1-XXX-dev.tar && docker load -i centos-6.8-x86_64-php-7.1-XXX-dev.tar

添加镜像如图:

跑docker需要服务器什么配置 docker需要什么环境_跑docker需要服务器什么配置_04


3、启动Nginx-Proxy代理

创建本地开发环境docker Network:
$ docker network create nginx-proxy
启动Nginx-Proxy镜像,该镜像将监控上一步创建的nginx-proxy network内的所有新VIRTUHOST添加,并自动增加反向代理
docker run -d -p 80:80 –name nginx-proxy –net nginx-proxy –restart always -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy
4、启动项目服务

git clone {项目git地址} {本地项目目录}   # 拷贝代码仓库到本地目录 git clone {项目git地址} {本地项目目录}   # 拷贝代码仓库到本地目录 cd {本地项目目录} # 进入本地目录
docker−composeup–force−recreate–remove−orphans−d d o c k e r − c o m p o s e u p – f o r c e − r e c r e a t e – r e m o v e − o r p h a n s − d docker ps # 查看执行的容器
$ docker exec -it {container_name} sh # 登入进容器

到此为止,基本环境已经搭建完毕,接下来就是在nginx中、hosts、docker镜像virtual_host中分别添加项目域名(注意nginx更改后及时更新,且docker重启后镜像conf文件更改将回退);

启动容器及更改nginx、更新如图:

跑docker需要服务器什么配置 docker需要什么环境_linux_05

跑docker需要服务器什么配置 docker需要什么环境_linux_06

现在本地IDE的代码将会及时同步到远程,其中有些具体细节省略了,如果有个别小疑问可以小窗我,有些情况可能还会涉及到跳板机等,其他的下节再介绍。共同学习,进步!