美文网首页我的Docker之路DockerDocker容器技术
Docker从零到集群(2/3)—Machine,Compose

Docker从零到集群(2/3)—Machine,Compose

作者: 无聊数藏家 | 来源:发表于2017-07-05 14:10 被阅读225次

    系列目录

    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

    1. 在已经安装完成VirtualBox的情况下,使用Dokcer Machine创建虚拟机,命令如下:
      docker-machine create m1
      本文所有命令都会以能完成功能为基础的最小原则,以方便初学者学习,更多命令参数帮助可以通过-h/--help来获取,还可通过查阅官方文档进一步学习
      以上命令中,会默认 -d/--driver virtualbox 参数,意思是使用virtualbox的驱动来创建一台虚拟机,这台虚拟机会带有Docker运行环境,我们可以在这台虚拟机快速构建我们的Docker单机应用,包括创建镜像,上传镜像,和运行容器

    2. 查看已经创建好的虚拟机
      docker-machine ls

    3. 进入创建好的虚拟机m1
      docker-machine ssh m1
      就这么简单,我们就进入到了刚才创建好的虚拟机中,和真实宿主机器的环境一样,我们可以通过Docker命令来构建Docker镜像了
      需要注意的是,以上3个步骤为Docker Machine的基本使用,如果不想使用虚拟机,那么在宿主机上安装好Docker环境后,可以直接在宿主机上操作,以上3个步骤省略

    二、Docker File

    1. 在原应用文件夹下编写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

    1. 拷贝应用代码到虚拟机中(如果非虚拟机环境,则此步骤可省略)
      docker-machine scp -r 源码目录 m1:目的路径

    2. 编写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"
    
    1. 构建镜像和运行容器
      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官网

    相关文章

      网友评论

        本文标题:Docker从零到集群(2/3)—Machine,Compose

        本文链接:https://www.haomeiwen.com/subject/uceacxtx.html