背景
最近组内有同学用docker在项目中应用,参加了设计分享,分享完后多数同学都是“我是谁,我从哪儿来,我到哪儿去”的一脸懵圈,这技术已经出现有些年头了,但在我们前端圈里有实践应用的还不多,而这也是我第一次参加docker技术在实践项目中的应用。于是就有了这一篇的学习记录。
Docker是啥?
- Docker Client:Docker提供给用户的客户端。Docker Client提供给用户的是一个终端,用户输入Docker提供命令来管理本地或远程服务器。
- Docker Daemon:Docker服务的守护进程。每台服务器上只要安装Docker的环境,基本上就跑有一个后台程序Docker Daemon, Docker Daemon会接收Docker Client发过来的指令,并对服务器进行具体操作。
- Docker Image:镜像。绿色安装程序。
- Docker Registry:是 Docker Image的仓库,就像git仓库一样,用来管理Docker镜像,提供Docker镜像的上传,下载,浏览等,也就Dock Hub.
- Docker Container:Docker 容器。Docker Container是跑项目程序,消耗机器资源,提供服务的地方,Docker Container 通过Docker Images 启动,在Docker Images的基础上运行代码。 Docker Container提供了系统硬件环境,然后使用Docker Images制作好的系统盘,再加上项目代码,就可以运行起来提供服务。
Docker怎么玩
- 下载、安装、初遇篇 完整记录在 windows7 下使用 docker 的过程这个链接,有比较完整的下载引导,适合新手直接安装docker,这篇随作者step by step下来,基本都把一个container跑起来
- 命令解析
docker-machine ssh default
复制代码
Create and manage machines running Docker. Log into with SSH on default machine.
docker ps -a
复制代码
- docker rm或docker kill等令删掉容器,
- docker attach containerName进入容器(容器是启动的),
- docker start -i(启动容器并入进)
docker --help
复制代码
可以快速查看docker的命令
docker rm containerName
复制代码
移除container名称 删除容器还有
- docker stop name
- docker kill name
- docker rmi 删除镜像
docker pull node
复制代码
下载安装最新版本的node的linux系统
docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
复制代码
docker run --help 可以查看docker run的参数命令
实践
基于上面的命令的解释,开始一个实例 先在宿机上应射一个本地目录,在windows上的操作上面的那篇引导文章里有指出。然后拉代码到这个目录
git clone https://github.com/ltaoo/koa-template.git
复制代码
- 启动docker machine
docker-machine ssh default
复制代码
- mount命令把宿主机的目录应射到default的docker主机终端上
mount
复制代码
- 下载node的linux镜像
docker pull node
复制代码
- 启动容器,/docker_study/koa-template是代码目录,这个目录会应射到容器的app目录
docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
复制代码
- 在容器里进入app目录,安装应用依赖
npm i
复制代码
- 启动应用
node start.js
复制代码
docker-machine的ip一般是192.168.99.100 所以上面的应用可以能过 http://192.168.99.100:3000 进行访问,同时修改源码里的内容,访问的内容就会修改
基于上面的实践
我们可以总结出一套用于发布工程的方法
-
要发布工程时,源代码从指定的gitlab的分支如master上拉代码下来
-
把原来宿主机上的container 重启一下,工程就部署完成了
-
如果要新开一个测试环境,可以新做一个image,然后从指定分支拉代码,在测试容器里进行测试,效率很高
参考资料
更多精彩内容,请关注网易考拉前端团队微信公众号
ps:广告一波,网易考拉前端招人啦~~~有兴趣的戳我投简历