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简单自动化部署的更多相关文章

  1. Centos7.6上利用docker搭建Jenkins来自动化部署Django项目

    一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚. 整个过程相当复 ...

  2. docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)

    前言 背景 最近在帮学校导师写项目,团队有4个人,项目前后端分离.如果是选择瀑布式开发:(在约定好接口的情况下)A.B同学写前端,C.D同学写后端,然后约定一个时间统一联调,最后将项目交付安装到客户机 ...

  3. 在阿里云Centos7.6上利用docker搭建Jenkins来自动化部署Django项目

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_84 一般情况下,将一个项目部署到生产环境的流程如下: 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更 ...

  4. 基于Docker+Jenkins实现自动化部署

    使用码云搭建Git代码存储仓库 https://gitee.com/login 使用码云创建私有私有git仓库 将本地springboot项目上传到git仓库中 基于Docker安装Jenkins环境 ...

  5. CentOS下将php和mysql命令加入到环境变量中-简单

    开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v  或 mys ...

  6. 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker

    环境 centos7.9,.NET5 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \home # ...

  7. linux下安装jenkins实现自动化部署

    安装 开始 1.安装之前,必须先安装JDK 可以参考  http://www.cnblogs.com/ericli-ericli/p/7070874.html 2.使用相关命令: wget -q -O ...

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

    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...

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

    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...

随机推荐

  1. 给虚拟机添加eth1网络适配器(网卡)

    1.虚拟机 -- > 设置 2.添加 --> 网络适配器 --> 下一步 3.主机 -- > 完成 -- > 确定 4.修改网卡的配置文件 cd /etc/sysconf ...

  2. JS倒计时,自动提交表单!

    <form id="frm" action="http://www.baidu.com"> 考试还剩余<div id="time&q ...

  3. url_encode and url_decode in Shell

    之前写过一版 shell下解码url,下面给出另外一个版本 from https://gist.github.com/cdown/1163649 function urlencode() { loca ...

  4. 从零玩转JavaWeb系列7web服务器-----get与post的区别

    总结get与post的区别 get参数通过url传递,post放在request body中. get请求在url中传递的参数是有长度限制的,而post没有. get比post更不安全,因为参数直接暴 ...

  5. 前端开发之HTML篇二

    主要内容: 一.表格标签 -- table 二.表单标签 -- form 三.常用标签属性和分类 四.标签嵌套规则 1️⃣  表格标签 -- table 表格由<table> 标签来定义. ...

  6. Tsung测试之配置文件

    Jabber配置: <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/tsung/sha ...

  7. log4j-over-slf4j工作原理详解

    log4j-over-slf4j工作原理详解 摘自:https://blog.csdn.net/john1337/article/details/76152906 置顶 2017年07月26日 17: ...

  8. wins 软件安装

    1.x86 x64区别86就是原来的32位操作系统64就是现在比较新的64位操作系统

  9. poj 2007 Scrambled Polygon

    #include<stdio.h> #include<algorithm> using namespace std; #define Max 60 struct Point { ...

  10. 我为什么要翻译ES6官方文档

    ES6出来很久了,现在网上也有很多教程,其中以阮一峰老师的教程最为经典.大家通过学习阮老师的教程肯定能学懂ES6最新的技术. ES6官方文档是一个规范,各浏览器在实现ES6的具体API时都会遵循它.我 ...