系列目录
Docker从零到集群(1/3)—Machine,Compose,Swarm
Docker从零到集群(2/3)—Machine,Compose,Swarm
Docker从零到集群(3/3)—Machine,Compose,Swarm
前言
通过前一篇文章Docker基础概念已经说明了构建一个Docker集群系统的思路,那么就从本文开始实践如何一步步实现Docker单机应用系统,而下一篇文章会介绍Docker集群系统的搭建
准备
-
本文实践环境为Mac OS X 10.13.2(High Sierra)
准备好VPN,否则相关文档和工具的访问会非常慢,甚至无法访问 -
安装Docker For Mac
在Docker官方网站下载,dmg文件,下载后解压拖拽放入应用程序文件夹即可
Docker For Mac 替代了Docker Tools,集成了Docker开发所有的工具环境 -
安装VirtualBox虚拟机,用于Docker Machine创建虚拟机
Mac OS X默认是没有虚拟机的,所以要使用Docker Machine,需要事先安装好VirtualBox,这在Docker的官方文档上有相关说明
步骤
一、Docker Machine
-
在已经安装完成VirtualBox的情况下,使用Dokcer Machine创建虚拟机,命令如下:
docker-machine create m1
本文所有命令都会以能完成功能为基础的最小原则,以方便初学者学习,更多命令参数帮助可以通过-h/--help来获取,还可通过查阅官方文档进一步学习
以上命令中,会默认 -d/--driver virtualbox 参数,意思是使用virtualbox的驱动来创建一台虚拟机,这台虚拟机会带有Docker运行环境,我们可以在这台虚拟机快速构建我们的Docker单机应用,包括创建镜像,上传镜像,和运行容器 -
查看已经创建好的虚拟机
docker-machine ls
-
进入创建好的虚拟机m1
docker-machine ssh m1
就这么简单,我们就进入到了刚才创建好的虚拟机中,和真实宿主机器的环境一样,我们可以通过Docker命令来构建Docker镜像了
需要注意的是,以上3个步骤为Docker Machine的基本使用,如果不想使用虚拟机,那么在宿主机上安装好Docker环境后,可以直接在宿主机上操作,以上3个步骤省略
二、Docker File
- 在原应用文件夹下编写Dockerfile文件,指定部署序列,Node应用例子如下:
# FROM node
FROM mhart/alpine-node:latest
#创建应用目录
RUN mkdir -p /usr/node/autodeploy
#设置工作目录
WORKDIR /usr/node/autodeploy
#复制所有文件到工作目录
COPY . /usr/node/autodeploy
#编译运行node项目
RUN npm install
#运行命令
CMD ["npm", "start"]
Dockerfile文件即指定你的应用所需部署环境,所需配置等等,这是Docker容器部署中最为核心的工作,持久化构建脚本
三、Docker Compose
-
拷贝应用代码到虚拟机中(如果非虚拟机环境,则此步骤可省略)
docker-machine scp -r 源码目录 m1:目的路径
-
编写docker-compose.yml文件(具体内容可查询官网,后续也会单独写一篇文章讲解)
以下docker-compose.yml文件配置了两个服务,分别是一个nginx服务器和一个node服务,都指定了构建目录,也就是说会指定构建目录下的Dockerfile,分别构建出两个镜像,然后还配置了nginx与node应用连接,这样在nginx中,就可以通过域名node访问
version: '3'
services:
nginx:
build: ./nginx
ports:
- "80:80"
volumes:
- /Users/cheney/Documents/docker/nginx/log:/var/log/nginx
# - /Users/cheney/Documents/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
# - /Users/cheney/Documents/docker/nginx/conf.d:/etc/nginx/conf.d
# - /Users/cheney/Documents/docker/nginx/html:/usr/share/nginx/html
links:
- autodeploy
autodeploy:
build: ./autodeploy
expose:
- "10001"
-
构建镜像和运行容器
docker-compose up
通过这个命令,会执行当前目录下的docker-compose.yml文件,根据里面的配置构建镜像,启动容器,这样,一个单机docker应用就完成了
四、访问测试
【在浏览器输入】http://m1的IP地址
【如不使用docker-machine虚拟机,直接访问本地】http://localhost
这样就可以看到返回结果了,在本例中,nginx和node的代码就省略了,访问原理很简单
nginx容器监听了80端口,然后转发给http://node:10001, 因为node容器监听10001端口,所以node容器就会收到请求,然后express应用路由拦截,返回数据
本例中,为了清晰直接,使用nginx和node命名,实际中应用名称可以mynginx,mynode等
总结
通过以上步骤,我们就能完成docker单机应用环境的部署搭建,因为每个人具体应用是不同的,所以本文省略了具体应用的代码,只展示最关键的docker命令控制。通过docker-compose.yml配置docker镜像和容器的构建启动,极大的省略了用繁琐的docker命令一个个构建镜像和启动容器
后续文章会介绍如何使用Docker Swarm进一步将我们的单机应用拓展成为集群,谢谢阅读
作者:CheneyXu
关于:XServer官网
网友评论