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= -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= chenyishi/microtest:1.0
保存后,点击buildnow
等待build成功,去dockhub上验证时候推送成功,去服务器B查看是否拉取成功
至此,实现了一个简单的跨主机的简单部署
下一章讲一下docker-swarm
CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署的更多相关文章
- Centos7.6上利用docker搭建Jenkins来自动化部署Django项目
一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚. 整个过程相当复 ...
- docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)
前言 背景 最近在帮学校导师写项目,团队有4个人,项目前后端分离.如果是选择瀑布式开发:(在约定好接口的情况下)A.B同学写前端,C.D同学写后端,然后约定一个时间统一联调,最后将项目交付安装到客户机 ...
- 在阿里云Centos7.6上利用docker搭建Jenkins来自动化部署Django项目
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_84 一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更 ...
- 基于Docker+Jenkins实现自动化部署
使用码云搭建Git代码存储仓库 https://gitee.com/login 使用码云创建私有私有git仓库 将本地springboot项目上传到git仓库中 基于Docker安装Jenkins环境 ...
- CentOS下将php和mysql命令加入到环境变量中-简单
开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v 或 mys ...
- 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker
环境 centos7.9,.NET5 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \home # ...
- linux下安装jenkins实现自动化部署
安装 开始 1.安装之前,必须先安装JDK 可以参考 http://www.cnblogs.com/ericli-ericli/p/7070874.html 2.使用相关命令: wget -q -O ...
- CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
随机推荐
- Java设计模式之——抽象工厂
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...
- loadView 和 viewDidLoad、viewDidunload 的区别
loadView 和 viewDidLoad 是 iPhone 开发中肯定要用到的两个方法. 他们都可以用来在视图载入的时候初始化一些内容. 但是他们有什么区别呢? viewDidLoad 方法只有当 ...
- shell编程——日志输出的同时显屏
在执行脚本的时候我们常常需要将执行过程全部输出到日志里,以备出现报错时可以跟踪分析,开始我用的是exec: exec 1>info.log #把全部执行过程输出到info日志中 exec 2&g ...
- .NET高级工程师逻辑面试题
1.面试题 有5座连续相邻的房子,并且每个房子有同的颜色:蓝色,绿色,红色,白色和黄色 每间房子的主人有不同的国籍:英国.印尼.德国.美国和荷兰 每个人喝不同的饮料:葡萄汁.咖啡.牛奶.茶和水 每个人 ...
- built-in SpecularType of Unity
[built-in SpecularType of Unity] 1.声明变量. 注意并没有在Shader中声明_SpecColor,因为Lighting.cginc中已经帮我们声明. 2.声明使用B ...
- Python基础:文件的基本操作
# 打开文件(如果不存在则新建) 向其中写入 f = open('D:\\test.txt', 'w') f.write('hello world, i am here!') f.close() pr ...
- MYSQL 测试常用语句使用技巧
终于有时间可以整理一下工作中常用的sql语句,基本的sql语句及增删改查就不说了.对于测试而言,经常用到的还是造数据,取随机数据和查询.比如造数据时,为了确保数据真实性,可能时间是随机的,用户是随机 ...
- Java核心技术-异常、断言和日志
程序发生错误时至少做到以下几点: *向用户通告错误 *保存所有的工作结果 *允许用户以妥善的形式退出程序 Java使用一种称为异常处理的错误捕获机制处理异常. 本章第一部分介绍Java的异常,第二部分 ...
- lintcode-单例
单例 是最为最常见的设计模式之一.对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例.例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 ...
- Windows下redis的安装与使用
Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...