CentOS下Docker与.netcore(一) 之 安装html
CentOS下Docker与.netcore(二) 之 Dockerfilegit
CentOS下Docker与.netcore(三)之 三剑客之一Docker-Composegithub
CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署web
CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群docker
上一章讲了Docker-compose,主要是在一台服务器上编排镜像与容器。假如如今要求在两台服务器上部署容器,通常的作法是登录到两台服务器分别部署,听起来也没问题。但若是从两台服务器增长到10台,就特别麻烦,这种状况下,Docker-machine出现了。有了Docker-machine以后,就能够很方便的在多台服务器上部署。centos
如今有两台服务器,咱们要实现经过服务器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
验证安装成功app
[root@cys-test-centos ~]# ssh-keygen
全部选项都直接回车ssh
[root@cys-test-centos ~]# ssh-copy-id xx.x.x.x #xx.x.x.x为服务器B的ip
至此,实现了服务器A到B的免密登录
在服务器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)
变动以后,接下来的操做都将应用与服务器B
并去服务器B上校验
至此,docker-machine安装完毕,这样咱们就能够经过一台服务器,建立多个主机,快速部署docker。但仍是有点不方便,咱们每次都要执行docker命令,为了解决这个问题,咱们能够结合jinkins,实现自动部署。
下面开始实现这个想法。
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 http://www.javashuo.com/article/p-vjyyfiqf-z.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查看是否拉取成功
至此,实现了一个简单的跨主机的简单部署