docker、harbor、jenkins概念
一、docker1、docker是什么1docker是一个的【工具软件】就像微信、VS Code、浏览器运行在你的电脑 / 服务器上。2「Docker 是造镜像、跑容器的工具」2、docker可以用来做什么1把你的代码 运行环境 依赖库 配置全部打包成一个「集装箱」Docker 镜像文件3、为什么要用docker给开发、运维、测试人员使用公司的测试只关心页面功能的话可以不需要了解docker1一次打包到处运行2开发、测试、线上环境完全一致开发人员需要编写Dockerfile文件把项目 环境封装成镜像交给运维部署运维人员传统方式无 Docker 为每个项目手动搭建专属的运行环境编程语言、依赖、中间件配置全套环境参数上传代码启动项目。使用Docker服务器装一次 Docker通用拉取开发打好的镜像一行命令docker run启动容器Docker 最终目的就是为了让运维部署更简单、不出错4、镜像是什么Docker 里的 “镜像”Image之所以叫这个名字核心源于 “镜像” 在技术领域的本义 ——对原始实体的精确、一致副本镜像的字面意思是 “镜子里的影像”与原物完全一致且不可直接修改。可以把 Docker 镜像理解成一个只读的、打包好的软件安装包 / 模板。它不是一个正在运行的程序而是包含了运行某个应用所需的所有东西5、流程打包阶段开发用 docker build 命令把「项目代码 运行环境 依赖 启动规则」打包成镜像文件静态、只读的“安装包”运行阶段运维 / 开发用 docker run 命令基于这个镜像文件创建并启动一个容器动态、可运行的 “程序实例”—— 容器启动后项目就对外提供服务了。二、HarborHarbor 是企业级的 Docker 私有镜像仓库专门用来在公司内部安全、统一地管理 Docker 镜像Docker 打包镜像Harbor 管镜像「打包镜像分为 手动 和 自动化 两种方式」以下是通过Jenkins自动打包三、Jenkins1、Jenkins Docker Harbor 的 CI/CD 流水线场景配置一个执行 shell 脚本的步骤(shell脚本在Jenkins里配置)脚本中调用 docker build -t 镜像名:标签 .基于项目的 Dockerfile构建 Docker 镜像构建完成后使用 docker push harbor地址/项目名/镜像名:标签 将镜像推送到 Harbor 私有仓库。在目标服务器上执行 docker pull 拉取该镜像然后 docker run 或更新容器2、CI/CDCI/CD 是 持续集成 和 持续交付/部署 的合称可以理解为让软件从代码到上线实现全自动化的一套“流水线”。** Jenkins 是目前最主流、最常用的 CI/CD 工具之一。**3、Jenkins架构页面与服务器Jenkins 服务器这是 “后台”。指安装并运行 Jenkins 程序的那台 物理电脑、虚拟机或云服务器。它负责真正“干活”拉代码、执行脚本。Jenkins 页面这是 “前台”。是 Jenkins 服务器自带的 Web 可视化界面。你通过浏览器访问它地址通常是 http://服务器IP8080点击按钮、配置任务本质上是向后台的服务器发送指令。4、Jenkins 服务器的部署方式为什么你看不到实体机(只要安装了Jenkins这台机器就是Jenkins 服务器)为了满足“永不关机”的要求Jenkins 通常不会安装在个人办公电脑上而是部署在云服务器最常见向云厂商阿里云、腾讯云、AWS 等租赁的“永不关机”的远程电脑。可通过公网地址如 http://cb.aihdl.com10111/随时随地访问。公司内网虚拟机在公司机房的高性能物理服务器上用软件虚拟出的“电脑”。只能在公司内网访问地址通常是 192.168.x.x。物理服务器少见机房角落里那台真实的主机。5、Jenkins工作条件要让 Jenkins 顺利执行任务需要提前在 Jenkins 服务器 上做好准备安装所需软件如在服务器上安装 Docker、Git 等否则脚本会报错“找不到命令”。配置权限确保 Jenkins 进程有权限调用这些软件。例如执行 Docker 命令需要将 Jenkins用户加入 docker 组。以下是通过开发人员手动打包四、手动打包1、工具1必须装Docker Desktop必须装 Docker Desktop 才能使用 docker 命令因为它包含了核心的 Docker 引擎2可选装Electerm你只是本地跑一跑 Electerm 不用装1、一个 SSH 连接服务器的工具2、部署到远程服务器需要一个 SSH 工具连上去输入命令输入主机地址服务器的ip地址, username密码就可以连接服务器2、Dockerfile1项目的根目录编写Dockerfile文件文件包括基于哪个基础镜像来构建比如 nginx、python、node要执行哪些操作比如安装软件、复制代码、配置环境容器启动时要运行什么命令比如启动服务2Dockerfile文本有高度通用的固定模板只需要修改少量参数比如文件路径、端口就能直接用