本地草稿

npm 缓存

npm cache get config 查看配置的缓存目录
npm cache add 单独添加某个包到缓存
npm cache clean 清除所有缓存
npm cache vertify 验证缓存的有效性,清除无用和损坏的缓存

npm i
--prefer-offline 跳过任何条件请求(304协商缓存)直接使用缓存数据,当缓存无法匹配时,访问网络
--prefer-online 强制重新验证缓存数据,并用新验证通过的数据刷新缓存
--offline 强制使用缓存,如果无法匹配则会出现代码错误

vite 打包时添加前缀的规则

vite打包时,不会为不存在的script引用添加前缀
也就是说,如果script引入的文件不存在,它就不会为它添加前缀

git分支概览

# 显示本地与远程分支的跟踪信息
git branch -vv
# 格式化以上命令
git branch -vv --format="%(refname:short) %(upstream:short)" | column -t

在linux中,找出所有正在监听外部连接的端口

# 使用 ss 命令(推荐)
sudo ss -tlnp | grep LISTEN
# 或者使用 netstat 命令
sudo netstat -tlnp | grep LISTEN

Docker 从入门到精通

一、核心概念

概念 说明
镜像 (Image) 只读模板,包含运行应用所需的一切(代码、依赖、系统库)
容器 (Container) 镜像的运行实例,类似一个轻量虚拟机
仓库 (Registry) 存储镜像的地方,Docker Hub 是默认公共仓库
Dockerfile 构建镜像的脚本,定义镜像的每一层
Docker Compose 多容器编排工具,用 YAML 定义多服务应用

类比理解:镜像 = 类,容器 = 实例,Dockerfile = 源代码


二、镜像操作

# 拉取
docker pull nginx:latest          # 从仓库下载镜像
docker pull mysql:8.0             # 指定版本

# 查看
docker images                     # 列出本地所有镜像
docker images -a                  # 包含中间层镜像

# 删除
docker rmi nginx:latest           # 删除镜像
docker rmi <image_id>             # 用 ID 删除

# 构建
docker build -t myapp:v1 .        # 根据当前目录 Dockerfile 构建
docker build -t myapp:v1 -f Dockerfile.prod .  # 指定 Dockerfile

# 打标签
docker tag myapp:v1 myrepo/myapp:v1   # 给镜像加新名称

# 推送
docker push myrepo/myapp:v1       # 推送到仓库

# 清理
docker image prune -a             # 删除所有未使用的镜像
docker system prune -a            # 清理所有未使用的资源(镜像+容器+网络)

三、容器操作

# 运行
docker run nginx                          # 前台运行(Ctrl+C 停止)
docker run -d nginx                       # 后台运行(detached)
docker run -d --name myweb -p 8080:80 nginx  # 命名 + 端口映射
docker run -d -v /host/dir:/container/dir nginx  # 挂载目录
docker run -it ubuntu bash                # 交互式终端

# 查看
docker ps                                # 运行中的容器
docker ps -a                             # 所有容器(含已停止)
docker logs <name/id>                    # 查看日志
docker logs -f <name/id>                 # 实时跟踪日志
docker exec -it <name/id> bash           # 进入容器内部

# 生命周期
docker stop <name/id>                    # 停止
docker start <name/id>                   # 启动已停止的容器
docker restart <name/id>                 # 重启
docker rm <name/id>                      # 删除(需先停止)
docker rm -f <name/id>                   # 强制删除

# 信息
docker inspect <name/id>                 # 查看容器详细信息
docker stats                             # 实时资源占用
docker top <name/id>                     # 容器内进程

四、Dockerfile 编写

# 基础镜像
FROM python:3.11-slim

# 维护者(可选)
LABEL maintainer="you@example.com"

# 设置工作目录
WORKDIR /app

# 复制文件(先复制依赖文件,利用缓存层)
COPY requirements.txt .

# 执行命令(安装依赖)
RUN pip install -r requirements.txt

# 复制项目代码
COPY . .

# 暴露端口(仅声明,不实际映射)
EXPOSE 8000

# 设置环境变量
ENV MY_VAR=value

# 容器启动命令
CMD ["python", "app.py"]

# 构建时参数
ARG BUILD_VERSION=1.0

关键指令:

指令 作用 示例
FROM 基础镜像(必须有) FROM python:3.11
RUN 构建时执行命令 RUN apt install -y curl
COPY 复制文件到镜像 COPY . /app
ADD 类似 COPY,支持自动解压 tar ADD app.tar.gz /app
WORKDIR 设置工作目录 WORKDIR /app
ENV 设置环境变量 ENV PORT=8000
ARG 构建时变量 ARG VERSION=1.0
EXPOSE 声明端口 EXPOSE 8000
VOLUME 声明匿名卷 VOLUME /data
CMD 容器启动命令(可覆盖) CMD ["python","app.py"]
ENTRYPOINT 容器入口(不易覆盖) ENTRYPOINT ["python"]

CMD vs ENTRYPOINT:

  • CMD 可被 docker run 后面的命令覆盖
  • ENTRYPOINT 不会被覆盖,CMD 的参数会追加给它

五、端口与网络

# 端口映射
-p 8080:80          # 宿主机 8080 → 容器 80
-p 127.0.0.1:8080:80  # 只监听本机
-p 8080-8090:80-90  # 端口范围

# 网络模式
--network bridge     # 默认,独立网络,容器间通过 IP 通信
--network host       # 共享宿主机网络(Linux),无需端口映射
--network none       # 无网络
--network mynet      # 自定义网络

# 自定义网络
docker network create mynet
docker run --network mynet --name web nginx
docker run --network mynet --name db mysql
# web 容器内可直接用 "db" 作为主机名访问 MySQL

六、数据持久化

# 三种方式
-v /host/path:/container/path    # Bind Mount(绑定宿主机目录)
-v myvolume:/container/path      # Named Volume(Docker 管理的命名卷)
--tmpfs /container/path          # Tmpfs(仅内存,重启丢失)

# 命名卷操作
docker volume create mydata      # 创建
docker volume ls                 # 列出
docker volume inspect mydata     # 查看详情
docker volume rm mydata          # 删除

选择建议:

  • 开发调试 → Bind Mount(代码实时同步)
  • 生产数据 → Named Volume(由 Docker 管理,更可靠)
  • 临时缓存 → Tmpfs

七、Docker Compose

services:
  web:
    build: .                       # 从 Dockerfile 构建
    # image: nginx:latest          # 或直接用镜像
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NODE_ENV=production
    env_file:
      - .env
    depends_on:
      - db                         # 依赖 db 服务
    restart: unless-stopped

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    volumes:
      - dbdata:/var/lib/mysql
    healthcheck:                   # 健康检查
      test: ["CMD", "mysqladmin", "ping"]
      interval: 10s
      retries: 5

volumes:
  dbdata:                          # 声明命名卷

常用命令:

docker compose up -d               # 后台启动所有服务
docker compose down                # 停止并删除容器
docker compose down -v             # 同时删除数据卷
docker compose logs -f             # 查看日志
docker compose logs web            # 查看指定服务日志
docker compose ps                  # 查看服务状态
docker compose restart             # 重启所有服务
docker compose exec web bash       # 进入某个服务的容器
docker compose pull                # 拉取最新镜像
docker compose up --build          # 重新构建并启动
docker compose config              # 验证并查看最终配置

八、多阶段构建(优化镜像大小)

# Stage 1: 构建
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .

# Stage 2: 运行(只复制需要的文件)
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app /app
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]

效果:构建工具(gcc 等)不会进入最终镜像,体积大幅减小。


九、实用技巧

# 查看镜像构建历史
docker history nginx:latest

# 查看磁盘占用
docker system df

# 一键清理(镜像+容器+网络+缓存)
docker system prune -a --volumes

# 导出/导入镜像(离线传输)
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar

# 导出/导入容器(含状态)
docker export -o web.tar web
docker import web.tar myweb:latest

# 限制资源
docker run -m 512m --cpus 1.5 nginx   # 内存 512MB,CPU 1.5 核

# 查看容器 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <name>

十、常见问题速查

问题 解决
镜像拉取超时 配置 registry-mirrors 或使用代理
容器内无法联网 检查 DNS:docker run --dns 8.8.8.8
端口被占用 lsof -i :8080 查看占用进程
容器启动后立即退出 docker logs <name> 查看错误
磁盘空间不足 docker system prune -a
文件修改不生效 检查 volume 挂载路径是否正确
容器间无法通信 确认在同一自定义网络中

知识体系总结

Docker
├── 镜像 (Image)
│   ├── Dockerfile 构建
│   ├── 多阶段构建优化
│   └── 仓库管理 (push/pull)
├── 容器 (Container)
│   ├── 生命周期 (run/stop/rm)
│   ├── 端口映射 (-p)
│   ├── 数据挂载 (-v)
│   └── 网络 (--network)
├── 编排 (Compose)
│   ├── 服务定义 (services)
│   ├── 依赖管理 (depends_on)
│   ├── 健康检查 (healthcheck)
│   └── 数据卷 (volumes)
└── 运维
    ├── 日志 (logs)
    ├── 监控 (stats)
    ├── 清理 (prune)
    └── 资源限制 (-m, --cpus)

什么是大模型?

大模型就是一个巨大无比的、可查询的条件概率表(虽然以神经网络参数的形式存储)。所谓的“智能行为”,不过是在足够精细的概率空间中,对下一个最合理的符号进行连续预测。当模型足够大、数据足够全,这种概率预测在人类看来,就表现得像理解、推理和创造。

所以,你的直觉很准确——大模型的神奇,本质上就是“规模化概率”带来的必然涌现。它没有真正的因果理解,但它拥有迄今为止人类创造出的最复杂的“关联概率网”。

WSL

# 已安装的 Linux 发行版列表,显示它们当前的状态和 WSL 版本
wsl --list --verbose
# 简写
wsl -l -v
# 关闭wsl
wsl --shutdown

校园网联合镜像站

https://mirrors.cernet.edu.cn/

环境变量相关

powershell 查看设置环境变量

$env:XXX
setx XXX "value"
查找:gci Env:(全部) gci Env:*ARK*(通配符)

linux
终端级:
直接执行:export MY_VAR="hello"

用户级:
编辑 ~/.bashrc 文件,末尾添加 export MY_VAR="hello"
source ~/.bashrc 使配置立即生效

系统级:
编辑 /etc/profile 或 /etc/environment 文件,其他同上

echo $MY_VAR

查找env | grep 关键字

posted @ 2026-11-12 09:54  海焰  阅读(3)  评论(0)    收藏  举报