zoukankan      html  css  js  c++  java
  • CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署

     CentOS下Docker与.netcore(一) 之 安装

    CentOS下Docker与.netcore(二) 之 Dockerfile

    CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose

    CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署

    CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群

    1.什么是Docker-machine

    上一章讲了Docker-compose,主要是在一台服务器上编排镜像与容器。假如现在要求在两台服务器上部署容器,一般的做法是登陆到两台服务器分别部署,听起来也没问题。但如果从两台服务器增加到10台,就特别麻烦,这种情况下,Docker-machine出现了。有了Docker-machine之后,就可以很方便的在多台服务器上部署。

    2.安装

    现在有两台服务器,我们要实现通过服务器A把镜像部署到服务器B

    服务器A安装docker-machine,执行命令

    base=https://github.com/docker/machine/releases/download/v0.16.0 &&
      curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
      sudo install /tmp/docker-machine /usr/local/bin/docker-machine

    验证安装成功

    3.服务器A创建SSH密钥对,并发到服务器B上

    [root@cys-test-centos ~]# ssh-keygen

    所有选项都直接回车

    [root@cys-test-centos ~]# ssh-copy-id xx.x.x.x    #xx.x.x.x为服务器B的ip

    至此,实现了服务器A到B的免密登陆

    4.docker-machine创建主机

    在服务器A上输入

    docker-machine create  -d  generic  --generic-ip-address=XX.X.X.X  host1      #XX.X.X.X为服务器B的ip

    这个过程会花费一些时间,等着就是了。

    安装完成,通过docker-machine ls查看列表

    也可以登陆到服务器B上,查看docker是否安装完成(docker-machine会给远程服务器B安装docker)

    5.变更服务器A的环境变量

    变更之后,接下来的操作都将应用与服务器B

    6.安装一个测试镜像

     

      并去服务器B上校验

      至此,docker-machine安装完毕,这样我们就可以通过一台服务器,创建多个主机,快速部署docker。但还是有点不方便,我们每次都要执行docker命令,为了解决这个问题,我们可以结合jinkins,实现自动部署。

     7.设计jenkins+docker自动化部署

    下面开始实现这个想法。

      1)在docker hub上新建一个账号(docker hub是一个可以上传自己的镜像的云端网站,作用与github相对于代码一样),测试账号登陆,并推送镜像

      

      这样我们就可以把本地的镜像上传到docker hub,别人就可以拉取然后运行

      上一章,我们新建了两个镜像

      

      我们把webdocker_s_provider推送到docker hub

      首先要进行tag打标签,格式如下 docker   tag   镜像名   dockerhub用户名/镜像名,然后push,格式 docker   push  新的镜像名

      

      推送成功,我们登陆到dockerhub 查看一下

      

      我们可以登陆到服务器b,拉取一下,验证成功

     

      2)创建项目,并创建Dockerfile

    dockerfile内容如下:

    FROM microsoft/dotnet:2.1-aspnetcore-runtime
    MAINTAINER yishi.chen
    
    LABEL description="microservice"
    LABEL version="1.0"
    
    ARG microport
    
    WORKDIR /app
    COPY bin/Release/netcoreapp2.0/publish/ .
    EXPOSE $microport
    ENTRYPOINT ["dotnet","MicroService.dll"]

      3)我们将.netcore代码上传到github(或私有git库,svn私有库)

      4)安装jenkins  https://www.cnblogs.com/stulzq/p/9291237.html

      5)jenkins中新建一个freestyle project

      

     6.jenkins中配置新建的freestyle project 

     

    详细配置

    dotnet publish -c Release
    
    docker build -t microtest:1.0 --build-arg microport=1000 -f "$WORKSPACE/MicroService/Dockerfile" "$WORKSPACE/MicroService"
    
    docker login -u *** -p ****
    
    docker tag microtest:1.0 chenyishi/microtest:1.0
    
    docker push chenyishi/microtest:1.0
    
    /usr/local/bin/docker-machine env host1
    
    eval $(/usr/local/bin/docker-machine env host1)
    
    docker pull chenyishi/microtest:1.0
    docker run -d -p "1000:1000" -e microport=1000 chenyishi/microtest:1.0

    保存后,点击buildnow

     等待build成功,去dockhub上验证时候推送成功,去服务器B查看是否拉取成功

    至此,实现了一个简单的跨主机的简单部署

    下一章讲一下docker-swarm

  • 相关阅读:
    代码可复用性
    开始读《道不远人深入解析ASP.NET 2.0控件开发>>
    我的软件通讯录之二
    .Net中的堆于栈
    JavaScript技巧
    我的软件之通讯录(C#)
    快过年了,自己却病了,哎~~~~~~~
    整合dz论坛短消息出现的问题
    [转]用反射+特性列出所有的枚举变量及其描述信息,绑定到DropDownList上。
    [转]Javascript 调用MSAgent(Desc:网页中出现魔法巫师)
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10007125.html
Copyright © 2011-2022 走看看