欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-29 23:45:00
1.什么是Docker-machine 上一章讲了Docker-compose,主要是在一台服务器上编排镜像与容器。假如现在要求在两台服务器上部署容器,一般的做法是登陆到两台服务器分别部署,听起来也没问题。但如果从两台服务器增加到10台,就特别麻烦,这种情况下,Docker-machine出现了。有 ......

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

验证安装成功

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

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查看列表

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

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

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

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

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

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

6.安装一个测试镜像

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

  并去服务器b上校验

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

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

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

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

下面开始实现这个想法。

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

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

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

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

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

  我们把webdocker_s_provider推送到docker hub

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

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

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

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

 

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

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

 

  2)创建项目,并创建dockerfile

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

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 

  5)jenkins中新建一个freestyle project

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

 6.jenkins中配置新建的freestyle project 

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

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

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

详细配置

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

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

 

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

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

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

 

下一章讲一下docker-swarm