第一步:创建一个知识库类(KB)目标:将长文档分块并生成嵌入向量,便于后续检索。
1.1 定义 KB 类及初始化方法12345678910111213class KB: """ 知识库类,用于管理文档分块和生成嵌入向量。 """ def __init__(self, filepath): try: with open(filepath, 'r', encoding='UTF-8') as f: content = f.read() except FileNotFoundError: raise ValueError(f"File {filepath} not found.") self.docs = list(self.split_content(content)) self.embeds ...
DevOps
未读一、什么是跨域?跨域指的是浏览器在发起请求时,所请求的资源的域名、协议或端口与当前页面所在的域名、协议或端口不一致的情况。浏览器出于安全考虑,默认阻止来自不同源的资源共享。这个安全策略被称为“同源策略”(Same-Origin Policy)。
同源策略同源策略要求,浏览器中加载的网页只能访问与其同一域(域名、协议、端口)下的资源。如果网页 A 来自 http://example.com,则它只能访问同样在 http://example.com 域下的资源,无法访问 http://api.example.com 或者 http://otherdomain.com的数据。否则就会产生跨域请求。
二、跨域的原理跨域问题的根本原因是浏览器的同源策略,旨在防止恶意网站窃取用户数据或进行 CSRF(跨站请求伪造)攻击。浏览器通过同源策略限制了不同域之间的资源共享。
同源策略的限制:
协议不同:比如一个页面是 http://example.com,另一个页面是 https://example.com。
域名不同:比如 http://example.com 和 http://sub.example. ...
DevOps
未读容器编排的概念1.1 什么是容器编排?容器编排(Container Orchestration)是指自动化管理、部署、扩展和网络配置容器应用程序的过程。它的目标是通过集中控制来优化多个容器的运行,以实现高可用、负载均衡、自动伸缩等功能。
容器本身是轻量级、可移植的虚拟化单元,但当我们需要在生产环境中部署成百上千的容器时,手动管理变得非常困难,容器编排工具的出现就是为了解决这一问题。编排工具不仅能够自动化容器的部署和管理,还能确保容器之间的高效协作。
1.2 为什么需要容器编排?随着应用规模的扩大,容器编排变得尤为重要。以下是一些容器编排的需求和好处:
高可用性:容器编排能够监控和重启失败的容器,确保服务的持续可用性。
自动伸缩:根据负载自动增加或减少容器实例,保证应用的性能和资源利用最大化。
负载均衡:容器编排工具通常内置负载均衡功能,可以自动分配请求到不同的容器实例,确保流量均匀分配。
服务发现:容器编排系统支持容器之间的自动发现,确保不同服务的容器能够轻松找到并通信。
资源管理:自动分配和优化容器的资源(如 CPU、内存、存储等),确保容器运行的高效性。
持续集成和持续 ...
DevOps
未读什么是 Docker Compose?Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。使用 Docker Compose,你可以通过一个简单的 YAML 配置文件来定义所有的服务、网络和数据卷,并通过一个命令启动所有容器。Compose 能够让你在单台主机上管理多个相互依赖的容器,并简化了容器的部署、管理和更新。
Docker Compose 的优势
简化多容器管理:Docker Compose 允许你通过一个文件管理多个容器,而无需为每个容器编写单独的命令。
自动化部署:只需要运行一个命令,就可以启动整个应用栈,减少了手动配置和部署的复杂性。
可移植性:Docker Compose 配置文件是跨平台的,可以在不同的开发和生产环境中使用,确保一致的部署。
灵活的服务管理:支持多个服务之间的网络连接,确保它们能够相互通信。
易于扩展:可以轻松增加或减少服务实例,适应不同的应用需求。
编写 docker-compose.yml 文件Docker Compose 使用 docker-compose.yml 文件来定义应用的服务、网络和数据卷。以下是一个典 ...
DevOps
未读Docker网络模型Docker 使用了不同的网络模式来管理容器之间的网络连接。默认情况下,Docker 为每个容器分配一个虚拟网络接口,并通过不同的网络驱动来控制它们的行为。Docker支持以下几种网络模式:
桥接网络(Bridge)
桥接网络是 Docker 默认的网络模式。每当你启动一个容器时,Docker 会自动将容器连接到桥接网络,并为容器分配一个 IP 地址。容器可以通过该 IP 地址和外部世界进行通信,但容器之间的通信默认是被隔离的。
应用场景:适用于容器需要与宿主机进行通信,同时容器之间也需要隔离的情况。比如一个 Web 服务容器与一个数据库容器相互通信的场景。
如何使用:
12docker network create --driver bridge my-bridge-networkdocker run --network my-bridge-network my-container
主机网络(Host)
主机网络模式意味着容器与宿主机共享网络栈,容器不会有独立的网络命名空间。容器会直接使用宿主机的 IP 地址,因此它们与宿主机在网络上是完全相同的。
应 ...
DevOps
未读什么是 Dockerfile?Dockerfile 是一系列命令和指令的集合,用于定义如何从零开始构建 Docker 镜像。通过执行 docker build 命令,Docker 会读取 Dockerfile 中的指令,并按照顺序逐步构建镜像。
Dockerfile 的基本结构和步骤通常包括选择基础镜像、安装依赖、复制文件、设置环境变量、执行命令等。
Dockerfile 的基本结构一个典型的 Dockerfile 可能包含以下内容:
1234567891011121314151617181920# 1. 选择基础镜像FROM ubuntu:20.04# 2. 设置维护者信息LABEL maintainer="your_email@example.com"# 3. 更新镜像并安装软件包RUN apt-get update && apt-get install -y nginx# 4. 复制本地文件到镜像中COPY ./index.html /usr/share/nginx/html/index.html# 5. 设置环境变量ENV APP_ENV=p ...
DevOps
未读1. docker run - 启动容器docker run 是 Docker 中最常用的命令之一,用于启动一个新的容器并运行镜像。其基本格式如下:
1docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用选项:
-d:后台运行容器(即容器将以分离模式运行)。
-p:映射容器端口到主机端口,例如 -p 8080:80 将容器的 80 端口映射到主机的 8080 端口。
--name:为容器指定一个名称。
-v:挂载主机目录或卷到容器,例如 -v /path/on/host:/path/in/container。
--rm:容器停止后自动删除容器。
示例:1docker run -d -p 8080:80 --name my_container nginx
此命令将启动一个名为 my_container 的容器,运行 Nginx 镜像,并将容器的 80 端口映射到主机的 8080 端口。
2. docker build - 构建镜像docker build 命令用于从 Dockerfile 构建镜像。Dockerfile 是一种文本文件,包 ...
DevOps
未读1. 镜像(Images)镜像是 Docker 的核心组成部分之一,它是一个包含应用程序及其所有依赖的只读模板。可以将镜像看作是应用程序的“快照”,它包含了应用运行所需要的操作系统库、工具、配置文件等。
镜像的特点:
只读:镜像本身是不可变的。当你运行镜像时,Docker 会为它创建一个容器。
可共享:镜像可以在不同的机器上共享和复用,你可以从 Docker Hub 或其他仓库中拉取镜像。
分层结构:镜像是通过多个层(Layer)叠加形成的,每一层代表镜像的一部分内容。Docker 通过这种方式提高了存储效率,因为多个镜像层可以共享。
使用场景:
应用打包:你可以将一个应用及其所有依赖打包成一个镜像,这样可以确保应用在不同环境中的一致性。
快速部署:镜像的快速部署能力使得它在 CI/CD(持续集成/持续部署)中非常有用。
2. 容器(Containers)容器是 Docker 的另一个核心概念,它是镜像运行时的实例。可以理解为镜像的“活体”版本。每个容器都有自己的文件系统、网络和进程,但它们共享宿主操作系统的内核。
容器的特点:
隔离性:每个容器运行在一个隔离的 ...
DevOps
未读1. Windows 上安装 Docker在 Windows 上安装 Docker 最简单的方法是通过 Docker Desktop。
步骤:
前往 Docker 官方网站下载 Docker Desktop for Windows 下载链接。
安装 Docker Desktop,安装过程比较简单,只需点击“下一步”并接受许可协议即可。
安装完成后,启动 Docker Desktop。初次启动时,Docker 会要求你启用 WSL 2(Windows Subsystem for Linux 2),如果你还没有安装WSL 2,Docker 会提供安装指导。
安装并启用 WSL 2 后,Docker Desktop 就可以在 Windows 上正常运行了。
注意事项:
Docker Desktop 需要 Windows 10 或更高版本(Professional 或 Enterprise)。
启用 WSL 2 可能需要一些额外的步骤,比如在 PowerShell 中执行一些命令来启用 Windows 功能。
2. Linux 上安装 Docker在 Linux 上安装 Docker ...
DevOps
未读什么是Docker?Docker 是一个开源的容器化平台,它让开发者能够快速构建、部署和运行应用程序。简单来说,Docker就像是一个轻量级的虚拟机,但它并不需要整个操作系统。它通过“容器”来隔离应用和环境,使得你可以把应用打包成一个标准的格式,并且在不同的机器上以相同的方式运行。
虚拟化和容器化的区别很多人会把 Docker 和虚拟化混淆,其实它们是不同的技术。虚拟化技术是通过创建多个虚拟机,每个虚拟机都有自己的操作系统。这样虽然能够做到隔离,但是每个虚拟机的资源开销也很大,需要占用大量的CPU、内存和硬盘空间。而容器化(就是 Docker的核心)则不需要为每个应用提供完整的操作系统,它只是将应用及其所有依赖打包在一起,并且共享宿主机的操作系统资源。这样就能大大节省系统资源,同时还能提高应用的启动速度。
总结一下:
虚拟化:每个虚拟机有自己的操作系统,资源开销大。
容器化:容器共享操作系统,资源开销小,启动快。
为什么要使用Docker?Docker 给开发、测试和部署带来了很多便利,尤其是在复杂的项目中,使用 Docker 的优势更为明显。
1. 一致性和可移植性最重要的一个优 ...