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