当前位置: 首页 > news >正文

jenkins使用docker api配置自签证书 +发布项目

配置证书

1、创建目录/etc/docker/certs,

在该目录下执行下列命令

openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pemopenssl genrsa -out server-key.pem 4096 \
openssl req -subj "/CN=server" -sha256 -new -key server-key.pem -out server.csr \
echo subjectAltName = DNS:223.5.5.5,IP:106.14.114.xx,IP:172.22.251.52,IP:127.0.0.1 >> extfile.cnf \
echo extendedKeyUsage = serverAuth >> extfile.cnf \
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf//备注 ip为自己服务器的内外网地址openssl genrsa -out key.pem 4096 \
openssl req -subj '/CN=client' -new -key key.pem -out client.csr \
echo extendedKeyUsage = clientAuth > extfile-client.cnf \
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnfrm -rf -v client.csr server.csr extfile.cnf extfile-client.cnf \
chmod -v 0400 ca-key.pem key.pem server-key.pem \
chmod -v 0444 ca.pem server-cert.pem cert.pem

2、文件配置(/lib/systemd/system/docker.service )
编辑该文件如下:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H fd:// -H tcp://0.0.0.0:2376

3、重启docker服务

systemctl enable docker.service && systemctl daemon-reload  && systemctl start docker.service
systemctl status docker.service

4、查看docker api服务是否成功

netstat -lntp | grep dockerd

二、Jenkins配置

1、配置coding代码仓库访问权限。

2、配置docker镜像

3、docker api配置:Jenkins配置三个证书(ca.pem、cert.pem、key.pem)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、新建试图、配置任务

任务:新建任务——>流水线——>选择“Pipeline script from SCM”——>选择“git”(配置Jenkinsfile路径、取消“轻量级检出”)

四. jenkinsfile上的配置

 stage('Deploy to docker') {environment {// docker客户端证书凭证,若不需要ssl访问则注释DOCKER_CERT_PATH = credentials('saidi252-credit')}steps {script {container_port = 80container_port_map = ""docker_client_env = ""if (params.container_port) {container_port = "${params.container_port}"container_port_map = " -p ${params.container_port}:80 "}if (params.docker_remotes) {def docker_remote_arr = "${params.docker_remotes}".split(",")// 部署服务处理for (int i = 0; i < docker_remote_arr.size(); ++i) {docker_remote = "${docker_remote_arr[i]}"docker_client_env = "export DOCKER_TLS_VERIFY=1; export DOCKER_HOST=tcp://${docker_remote}:2377; docker_remote=${docker_remote};"sh "$docker_client_env docker rm -f $DOMAIN_NAME"//部署服务sh "$docker_client_env docker run -d --name ${DOMAIN_NAME} --restart=always \-e TZ='Asia/Shanghai'  -e CONTAINER_PORT=${container_port} -m ${LIMIT_MEMORY}M \$container_port_map -v /etc/localtime:/etc/localtime:ro   \$docker_image"echo "清理过时的镜像"sh "$docker_client_env docker images $docker_image_name -q --filter before=$docker_image | xargs --no-run-if-empty docker rmi "}}}}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c++----类与对象(下)
  • 数据结构与算法 - 数组
  • 大模型下的视频理解video understanding
  • K8S及Rancher部署
  • 记一些零碎的只是点和一些安全工具的使用(这里建议将漏洞原理搞清楚,然后可以尝试手动和使用工具)
  • 系统设计中15 个最重要的权衡
  • 艾体宝干货 | 如何分析关键网络性能指标?持续接收样品试用申请!
  • 行为验证码——产品
  • easyadmin layui js监听返回结果,进行token验证防止连点
  • 详细说明Java中Map和Set接口的使用方法
  • 全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
  • OpenFeign微服务调用组件
  • php yii2 foreach中使用事务,事务中使用了 continue
  • 快速排序(上)
  • 软件测试--python基础
  • [LeetCode] Wiggle Sort
  • 【笔记】你不知道的JS读书笔记——Promise
  • Cumulo 的 ClojureScript 模块已经成型
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Cloud Feign的两种使用姿势
  • TypeScript实现数据结构(一)栈,队列,链表
  • windows下如何用phpstorm同步测试服务器
  • 翻译:Hystrix - How To Use
  • 分享几个不错的工具
  • 经典排序算法及其 Java 实现
  • 悄悄地说一个bug
  • 什么软件可以剪辑音乐?
  • -- 数据结构 顺序表 --Java
  • 微信小程序:实现悬浮返回和分享按钮
  • #if #elif #endif
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (floyd+补集) poj 3275
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (原)本想说脏话,奈何已放下
  • (转)Linux下编译安装log4cxx
  • .md即markdown文件的基本常用编写语法
  • .Net IOC框架入门之一 Unity
  • .NET MVC 验证码
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 使用ajax控件后如何调用前端脚本
  • .NET6 命令行启动及发布单个Exe文件
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Bean注解详解
  • @Resource和@Autowired的区别
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [Android Pro] AndroidX重构和映射
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)