DevOp学习
CICD
流水线系统(CICD)中CI代表持续集成,CD代表持续交付 Continuous Delivery/Deployment。 这个系统主要帮助开发团队高效地完成代码编写、测试、部署等一些列过程
流水线系统的组成:
- 源代码管理:如git,用来版本控制
- 自动构建工具: 如Jenkins,Gitlab CI 等
- 自动测试工具:用于执行自动化测试,包括单元测试,集成测试等
- 部署工具: 如Docker,K8S等,用于自动化部署过程
- 监控和报告: 用于监控应用性能和健康状态
Docker
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,发布到任何流行的Linux服务器上,实现轻量级虚拟化
Docker本身不是容器,是创建容器的工具,是应用容器引擎。 Docker的两句口号:
- "Build,Ship and Run"
- "Build once, Run anywhere"
所以啥是Docker
- Docker是一个软件,可以运行在window,linux,mac等操作系统上
- Docker是一个开源的容器引擎,基于Go开发
- Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何的linux机器上
- 容器完全使沙箱机制,相互之间不会有任何接口,且性能开销极低。
Docker的入门知识
我们经常说Docker的时候,他们通常是指Docker Engine,它是一个客户端-服务器应用程序
Docker引擎包括如下主要组件:Docker Client,Docker daemon, containerd 以及 runc
Docker用的是C/S架构,Docker daemon 作为服务器,Docker Cli和Docker daemon进行通信

什么是Docker容器? 容器的本质是一种特殊的进程。通过Linux内核的命名空间(namespace)和控制组的技术,实现了对资源的隔离和限制。
从数据上看,Docker容器是基于Docker镜像创建的运行实例,镜像是容器的模板,包含了运行应用程序所需要的文件,依赖库。 容器是镜像的运行表现形式。
Docker的技术底座是linux的命名空间,控制组,UnionFs
docker 的网络类型
bridge 模式 docker 默认的网络配置,可以设置IP,但是要和docker host主机的虚拟网络在同一个网段
Dockerfile中常见的指令有哪些
# 构建镜像 (基于那个镜像)
FROM
WORKDIR # 创建应用目录
COPY package*.json ./ 将package.json文件复制到工作目录
COPY .. # 赋值原文件
MAINTAINER
RUN
CMD # 构建镜像时运行的指令
Docker Compose
Docker Compose 是一个管理多容器的工具。对Docker进行补充,有了Docker Compose ,开发者可以管理多容器之间的复杂关系和部署。
Docker Compose 用 docker-compose.yml 来描述多个容器之间的服务,网络和依赖,然后一次性启动所有服务。
适用场景 :
- Docker 适合需要独立运行某个容器的场景,比如快速测试或搭建开发环境
- Docker Compose 更加适合微服务架构或多组件的场景,比如一个web服务器,数据库和缓存组成的应用
例如,在Docker启动一个nginx容器,暴露在端口80.
docker run -d -p 80:80 nginx
在Docker Compose 运行nginx和mysql服务,并定义他们的环境和端口映射:
version: '3'
services:
web:
image:nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD:example