首页
关于
壁纸
直播
留言
友链
统计
Search
1
《三国志英杰传》攻略
6,338 阅读
2
Emby客户端IOS破解
6,209 阅读
3
白嫖Emby
6,202 阅读
4
《吞食天地1》金手指代码
6,092 阅读
5
破解emby-server
4,374 阅读
moonjerx
game
age-of-empires
zx3
san-guo-zhi
尼尔:机械纪元
net
emby
learn-video
docker
torrent
photoshop
route
minio
git
ffmpeg
im
vue
gitlab
typecho
svn
alipay
nasm
srs
mail-server
tailscale
kkfileview
aria2
webdav
synology
redis
oray
chemical
mxsite
math
π
x-ui
digital-currency
server
nginx
baota
k8s
http
cloud
linux
shell
database
vpn
esxi
rancher
domain
k3s
ewomail
os
android
windows
ios
app-store
macos
develop
java
javascript
uniapp
nodejs
hbuildx
maven
android-studio
jetbrain
jenkins
css
mybatis
php
python
hardware
hard-disk
pc
RAM
software
pt
calibre
notion
office
language
literature
philosophy
travel
登录
Search
标签搜索
ubuntu
mysql
openwrt
zerotier
springboot
centos
openvpn
jdk
吞食天地2
synology
spring
idea
windows11
吞食天地1
transmission
google-play
Japanese
xcode
群晖
kiftd
MoonjerX
累计撰写
380
篇文章
累计收到
465
条评论
首页
栏目
moonjerx
game
age-of-empires
zx3
san-guo-zhi
尼尔:机械纪元
net
emby
learn-video
docker
torrent
photoshop
route
minio
git
ffmpeg
im
vue
gitlab
typecho
svn
alipay
nasm
srs
mail-server
tailscale
kkfileview
aria2
webdav
synology
redis
oray
chemical
mxsite
math
π
x-ui
digital-currency
server
nginx
baota
k8s
http
cloud
linux
shell
database
vpn
esxi
rancher
domain
k3s
ewomail
os
android
windows
ios
app-store
macos
develop
java
javascript
uniapp
nodejs
hbuildx
maven
android-studio
jetbrain
jenkins
css
mybatis
php
python
hardware
hard-disk
pc
RAM
software
pt
calibre
notion
office
language
literature
philosophy
travel
页面
关于
壁纸
直播
留言
友链
统计
搜索到
108
篇与
net
的结果
2025-08-27
解决Docker容器中MySQL连接因LANG环境变量缺失导致的问题
解决Docker容器中MySQL连接因LANG环境变量缺失导致的问题问题描述在使用Docker容器部署Spring Boot应用时,遇到以下错误:java.lang.IllegalStateException: DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect环境信息:Docker容器:基于Ubuntu 22.04,运行宝塔面板数据库:MySQL 8.0.26(独立容器)应用:Spring Boot + Logback + MySQL Connector 8.0.16关键发现:同样的JAR包在虚拟机上运行正常,在容器中无法启动快速解决方案根本解决方案(推荐):apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 && export LANG=en_US.UTF-8 && export LC_ALL=en_US.UTF-8 && echo 'export LANG=en_US.UTF-8' >> ~/.bashrc && echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc && source ~/.bashrc临时解决方案(连接参数):在数据库连接URL中添加:allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8spring: datasource: url: jdbc:mysql://127.0.0.1:3306/your_database?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8或者在启动容器时添加环境变量:docker run -d \ --name your-container \ --net=host \ --restart always \ --privileged \ -e LANG=C.UTF-8 \ -e LC_ALL=C.UTF-8 \ your-image:tag详细排查过程初期错误理解最初看到错误信息,以为是Logback配置问题,尝试了多种方案:取消注释SQL方言配置 ❌<sqlDialect class="ch.qos.logback.core.db.dialect.MySQLDialect"/>使用DriverManagerConnectionSource ❌升级/降级Logback版本 ❌使用HikariCP替代Commons DBCP ❌暂时禁用DBAppender ✅(临时方案,不是根本解决)转换思路:环境差异分析经过两天的配置调试无果后,开始从环境角度分析问题。1. Java版本对比# 容器和虚拟机都是相同版本 java version "1.8.0_381" Java(TM) SE Runtime Environment (build 1.8.0_381-b09)2. 环境变量对比容器环境:JAVA_HOME=/home/root/soft/jdk1.8.0_381 PATH=/home/root/soft/jdk1.8.0_381/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin # 缺失 LANG 和 LC_* 变量虚拟机环境:JAVA_HOME=/home/root/soft/jdk1.8.0_381 LANG=en_US.UTF-8 # 关键差异! PATH=/home/root/soft/jdk1.8.0_381/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin3. MySQL驱动行为测试创建测试程序验证MySQL驱动的getGeneratedKeys支持:import java.sql.*; public class TestMySQLDriver { public static void main(String[] args) { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/your_database?useSSL=false", "username", "password"); DatabaseMetaData meta = conn.getMetaData(); System.out.println("supportsGetGeneratedKeys: " + meta.supportsGetGeneratedKeys()); System.out.println("Driver version: " + meta.getDriverVersion()); System.out.println("Database version: " + meta.getDatabaseProductVersion()); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }测试结果对比:容器中:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ... at TestMySQLDriver.main(TestMySQLDriver.java:7)虚拟机中:supportsGetGeneratedKeys: true Driver version: mysql-connector-java-8.0.16 Database version: 8.0.26关键发现: 容器环境尝试设置LANG环境变量时出现警告:export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)根因分析核心问题: 容器环境缺少LANG和LC_ALL环境变量,导致:Public Key Retrieval错误 - 这是MySQL 8.0的安全特性,在字符编码异常时更容易触发字符编码处理异常 - MySQL连接器在处理字符编码时出现问题SSL/TLS握手失败 - 编码问题影响了安全连接的建立getGeneratedKeys方法识别失败 - 驱动无法正确识别数据库功能支持本质问题: Public Key Retrieval is not allowed 错误在MySQL 8.0中很常见,但通常在环境正常的情况下可以通过连接参数解决。然而在缺少locale的容器环境中,这个错误变得更加顽固。解决方案详解方案1:修复LANG环境变量(根本解决方案,推荐)# 1. 安装locale支持 apt-get update apt-get install -y locales # 2. 生成UTF-8 locale locale-gen en_US.UTF-8 update-locale LANG=en_US.UTF-8 # 3. 设置环境变量 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # 4. 永久化配置 echo 'export LANG=en_US.UTF-8' >> ~/.bashrc echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc source ~/.bashrc # 5. 验证配置 locale方案2:连接字符串参数解决(临时方案)如果无法修改容器环境,可以通过调整MySQL连接参数来绕过这个问题:// 添加 allowPublicKeyRetrieval=true 参数 String url = "jdbc:mysql://127.0.0.1:3306/your_database?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8";完整连接参数建议:String url = "jdbc:mysql://127.0.0.1:3306/your_database?" + "useSSL=false&" + "allowPublicKeyRetrieval=true&" + "useUnicode=true&" + "characterEncoding=UTF-8&" + "serverTimezone=Asia/Shanghai";Spring Boot配置文件:spring: datasource: url: jdbc:mysql://127.0.0.1:3306/your_database?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: username password: password driver-class-name: com.mysql.cj.jdbc.Driver注意: 方案2虽然能解决连接问题,但不能根本解决locale缺失问题,可能在其他功能上仍有隐患。推荐优先使用方案1。方案3:Docker启动时配置docker run -d \ --name baota \ --net=host \ --restart always \ --privileged \ -e LANG=C.UTF-8 \ -e LC_ALL=C.UTF-8 \ -v /path/to/data:/data \ your-image:tag方案4:Dockerfile中预设FROM ubuntu:22.04 # 安装locale并设置环境变量 RUN apt-get update && \ apt-get install -y locales && \ locale-gen en_US.UTF-8 && \ update-locale LANG=en_US.UTF-8 ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 # 其他配置...验证解决效果修复后重新测试MySQL连接:java -cp .:mysql-connector-java-8.0.16.jar TestMySQLDriver期望输出:supportsGetGeneratedKeys: true Driver version: mysql-connector-java-8.0.16 Database version: 8.0.26经验总结环境一致性的重要性 - 看似相同的环境可能存在关键差异字符编码的影响范围 - LANG环境变量不仅影响显示,还会影响网络通信和数据库连接问题定位思路 - 当配置层面无法解决时,要从环境层面分析Docker容器的注意事项 - 容器环境通常是精简的,可能缺少一些基础的系统配置相关问题和预防类似问题可能出现在:其他需要字符编码的Java应用Python应用的数据库连接文件上传/下载功能国际化(i18n)应用预防措施:构建Docker镜像时主动设置LANG环境变量在CI/CD流程中添加环境一致性检查制作标准化的基础镜像,包含必要的locale配置关键要点:根本问题是locale缺失:Public Key Retrieval is not allowed 在MySQL 8.0中很常见,但在locale正常的环境中通常可以通过连接参数解决。在Docker容器的精简环境中,locale缺失使这个问题变得更加复杂。两种解决思路:治本:修复容器的locale环境,这样应用的各个方面都能正常工作治标:通过连接参数绕过验证,但可能在其他功能上仍有隐患环境一致性:Docker容器环境的精简性可能导致一些看似无关的系统配置缺失,而这些配置对应用的正常运行至关重要。在排查此类问题时,环境差异分析往往比配置调优更有效。
2025年08月27日
14 阅读
0 评论
0 点赞
2025-06-13
畅网微控N305+PVE+iKuai+iStoreOS构建内网开发环境
适用于畅网 N305 双网口主机,PVE 系统中安装 iKuai 路由,构建不依赖外网即可访问的内网环境。支持开发环境内所有虚拟机联网,PVE 自身也加入内网。即使没有外网接入,也能通过内网访问 PVE 管理界面。✅ 网络目标概述物理网口enp5s0:接入宽带网络(外网)enp4s0:直通给 iKuai,作为 LAN 接口,同时也是 n305 设备内所有虚拟机的内网出口PVE 虚拟网桥vmbr0:桥接 enp5s0,供 iKuai 虚拟机作为 WAN 使用vmbr1:桥接 enp4s0,供 PVE 自身及所有虚拟机加入 iKuai 管理的内网✅ 架构图(字符版) ┌──────────────────────┐ │ 上级路由 / 光猫 │ │ (172.18.18.x) │ └────────┬─────────────┘ │ │ 网线 ▼ ┌──────────────────────┐ │ N305主机 (PVE) │ │ │ │ ┌──────────────┐ │ │ │ enp5s0 │◄──┘ │ │ ↳ vmbr0 (WAN桥) │ │ └────┬─────────┘ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ iKuai虚拟机 │ │ │ │ │ │ │ │ ↳ vmbr0 = WAN口 │ │ │ ↳ vmbr1 = LAN口 │ │ └────┬─────────┘ │ │ │ ▼ │ ┌──────────────┐ │ │ vmbr1桥(LAN) │ │ │ 子网: 10.10.18.0/24 │ │ └────┬─────────┘ │ │ ┌─────────────┼────┬────────────┐ │ │ │ │ ▼ ▼ ▼ ▼ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ PVE主机本身 │ │ VM1(Linux) │ │ VM2(Win) │ │ 10.10.18.100 │ │ DHCP分配IP │ │ DHCP分配IP │ └────────────┘ └────────────┘ └────────────┘ │ ▼ ┌────────────┐ │ enp4s0物理网口│ └────┬───────┘ │ ▼ ┌────────────┐ │ 外部PC/Laptop│ │ DHCP分配IP │ └────────────┘✅ /etc/network/interfaces 配置模板(使用静态 IP)auto lo iface lo inet loopback iface enp5s0 inet manual iface enp4s0 inet manual auto vmbr0 iface vmbr0 inet dhcp bridge-ports enp5s0 bridge-stp off bridge-fd 0 auto vmbr1 iface vmbr1 inet static address 10.10.10.2 netmask 255.255.255.0 gateway 10.10.10.1 bridge-ports enp4s0 bridge-stp off bridge-fd 0✅ 一键配置脚本:net-config.sh保存为 /root/net-config.sh,并赋予执行权限:chmod +x /root/net-config.sh脚本内容如下:#!/bin/bash set -e if [ -z "$1" ]; then echo "❌ 用法: $0 <静态IP地址,例如 10.10.10.2>" exit 1 fi STATIC_IP="$1" GATEWAY="$(echo $STATIC_IP | awk -F. '{print $1"."$2"."$3".1"}')" echo "🔧 正在覆盖 /etc/network/interfaces ..." cat > /etc/network/interfaces <<EOF # network interface settings; autogenerated # Please do NOT modify this file directly, unless you know what # you're doing. # # If you want to manage parts of the network configuration manually, # please utilize the 'source' or 'source-directory' directives to do # so. # PVE will preserve these directives, but will NOT read its network # configuration from sourced files, so do not attempt to move any of # the PVE managed interfaces into external files! auto lo iface lo inet loopback auto enp5s0 iface enp5s0 inet manual auto enp4s0 iface enp4s0 inet manual allow-hotplug vmbr0 auto vmbr0 iface vmbr0 inet dhcp bridge-ports enp5s0 bridge-stp off bridge-fd 0 auto vmbr1 iface vmbr1 inet static address $STATIC_IP netmask 255.255.255.0 gateway $GATEWAY bridge-ports enp4s0 bridge-stp off bridge-fd 0 source /etc/network/interfaces.d/* EOF echo "✅ 新配置已写入 /etc/network/interfaces" echo "📡 内网 IP: $STATIC_IP" echo "🌐 网关地址: $GATEWAY" echo "🔁 正在重载网络配置..." ifreload -a || { echo "⚠️ ifreload 失败,尝试重启网络接口..." ifdown vmbr0 && ifup vmbr0 ifdown vmbr1 && ifup vmbr1 } echo "🎉 完成!建议 reboot 以确保配置生效" 使用示例:./net-config.sh 10.10.10.2✅ vmbr0 单用 / 双用 配置示例单用(仅供 iKuai 使用):auto vmbr0 iface vmbr0 inet manual bridge-ports enp5s0 bridge-stp off bridge-fd 0双用(PVE 也从外网 DHCP 获取 IP):auto vmbr0 iface vmbr0 inet dhcp bridge-ports enp5s0 bridge-stp off bridge-fd 0✅ 操作步骤总结(保姆级)1. 在 PVE Web 界面创建 vmbr1节点 → 网络 → 创建 Linux Bridge名称:vmbr1端口:enp4s0IP 留空保存后无需重启2. 上传并执行网络配置脚本scp net-config.sh root@<PVE_IP>:/root/ ssh root@<PVE_IP> chmod +x /root/net-config.sh ./net-config.sh 10.10.10.23. 启用网络配置ifdown vmbr1 && ifup vmbr1✅ 最终效果PVE 管理地址:10.10.10.2(或你指定的地址)所有虚拟机从 iKuai 获取 DHCP 地址并联网外部设备(如开发笔记本)通过网线接 enp4s0 即可访问 PVE,无需外网PVE 即使断网、iKuai 崩溃,仍然可本地访问🧩 后续建议设置 iKuai 静态分配,确保 PVE 网关地址固定使用内网 DNS 或 hosts 文件简化访问使用交换机扩展 LAN 端口,连接更多开发设备
2025年06月13日
37 阅读
0 评论
0 点赞
2025-02-22
使用 Docker 部署 Ollama 与 Open WebUI 完整指南
基于 DeepSeek-R1 模型的本地化部署方案前言本文详细介绍如何通过 Docker 快速搭建支持 GPU 加速的 Ollama 服务,并集成 Open WebUI 实现可视化交互界面。方案完整支持:✅ 多 GPU 并行计算✅ 模型持久化存储✅ 企业级权限管理✅ 中英文双语支持前置准备硬件要求NVIDIA 显卡(显存 ≥8GB,推荐 RTX 3060 以上)内存 ≥16GB磁盘空间 ≥50GB软件依赖# 安装 Docker 和 NVIDIA 容器工具包 sudo apt-get update sudo apt-get install -y docker.io nvidia-container-toolkit sudo systemctl restart docker # 验证 GPU 支持 docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi如果报错:sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit Hit:1 http://hk.archive.ubuntu.com/ubuntu jammy InRelease Hit:2 http://hk.archive.ubuntu.com/ubuntu jammy-updates InRelease Hit:3 http://hk.archive.ubuntu.com/ubuntu jammy-backports InRelease Hit:4 http://hk.archive.ubuntu.com/ubuntu jammy-security InRelease Reading package lists... Done Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package nvidia-container-toolkit你的系统中可能未正确添加 NVIDIA Container Toolkit 的软件源。请按以下步骤操作:解决方案如下:添加 NVIDIA 官方源和密钥# 安装依赖 sudo apt-get install -y curl # 添加 GPG 密钥 curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - # 添加仓库(注意系统代号匹配) distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list更新并安装sudo apt-get update sudo apt-get install -y nvidia-container-toolkit验证安装nvidia-ctk --version常见问题排查:如果系统代号不匹配(如 Ubuntu 22.04 应为 ubuntu22.04),可手动替换上述命令中的 $distribution若仍报错,尝试清理缓存:sudo rm -rf /var/lib/apt/lists/* sudo apt-get update替代方案(若网络受限):# 通过 NVIDIA Docker 仓库安装 sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker部署流程1. 部署 Ollama 服务# 创建持久化存储目录 mkdir -p ~/ollama_storage # 启动 Ollama 容器 docker run -d --name=ollama \ --gpus=all \ --restart unless-stopped \ -p 30037:11434 \ -v /home/$USER/dockerfile/ollama/data:/root/.ollama \ ollama/ollama # 下载 DeepSeek-R1 模型 docker exec -it ollama ollama run deepseek-r1:7b如果运行容器报错:xdboy@xdserver:~$ docker run -d --name=ollama \ --gpus=all \ --restart unless-stopped \ -p 30037:11434 \ -v /home/$USER/dockerfile/ollama/data:/root/.ollama \ ollama/ollama Unable to find image 'ollama/ollama:latest' locally latest: Pulling from ollama/ollama d9802f032d67: Pull complete 161508c220d5: Pull complete 6b78c8d09c74: Pull complete e0c387d586cc: Pull complete Digest: sha256:82956f40bb1f307c77f7a8c3ed91c7a37e072ed757ff143e34210a7b991b9480 Status: Downloaded newer image for ollama/ollama:latest 78a836df1c7ce1436b41b2d08e9d74764ae732fb06257308430ac9488ad8102d docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy' nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.你遇到的错误 libnvidia-ml.so.1: cannot open shared object file 表明 NVIDIA 容器运行时未能正确加载 GPU 驱动。以下是完整解决方案:问题原因NVIDIA 驱动未安装 Docker 容器需要宿主机已安装 NVIDIA 驱动并通过 nvidia-container-toolkit 暴露给容器。nvidia-container-toolkit 配置未生效 即使安装了工具包,Docker 可能未正确绑定 NVIDIA 驱动库。分步解决方案1. 确认 NVIDIA 驱动已安装运行以下命令检查驱动状态:nvidia-smi # 应有 GPU 信息输出若无输出,需先安装 NVIDIA 驱动:sudo ubuntu-drivers autoinstall # 自动安装推荐驱动 sudo reboot2. 修复 nvidia-container-toolkit 配置重新配置 NVIDIA 容器运行时并重启 Docker:# 确认工具包已安装 sudo apt-get install -y nvidia-container-toolkit # 重新生成配置 sudo nvidia-ctk runtime configure --runtime=docker # 重启 Docker 服务 sudo systemctl restart docker3. 验证容器 GPU 访问运行测试容器检查 GPU 是否可见:docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi若成功输出 GPU 信息,则配置已修复。4. 重新运行你的 Ollama 容器docker run -d --name=ollama \ --gpus=all \ --restart unless-stopped \ -p 30037:11434 \ -v /home/$USER/dockerfile/ollama/data:/root/.ollama \ ollama/ollama常见问题补充如果仍报错 libnvidia-ml.so.1强制绑定 NVIDIA 库(显式指定驱动路径):docker run -d --name=ollama \ --gpus=all \ -v /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1:/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 \ ollama/ollama若系统为 WSL2需在 Windows 宿主机安装 NVIDIA 驱动,并在 WSL2 中启用 GPU 支持:# 在 WSL2 中安装驱动兼容层 sudo apt-get install -y nvidia-cuda-toolkit关键日志检查若问题持续,检查 Docker 和 NVIDIA 容器日志:# Docker 日志 journalctl -u docker.service --since "5 minutes ago" # NVIDIA 容器日志 nvidia-container-cli -k -d /dev/tty info2. 部署 Open WebUIdocker run -d \ --name=open-webui \ -p 3000:8080 \ -e OLLAMA_API_BASE_URL=http://host.docker.internal:11434 \ --add-host=host.docker.internal:host-gateway \ --restart unless-stopped \ ghcr.io/open-webui/open-webui:main配置说明关键参数解析参数作用示例值--gpus=all启用全部 GPU必填-v ~/ollama_storage模型存储路径可自定义目录OLLAMA_API_BASE_URLOllama 服务地址保持默认网络架构示意图[用户浏览器] <-> [Open WebUI:3000] <-> [Ollama API:11434] ↑ | └── 模型数据持久化存储 ───┘验证部署1. 检查服务状态docker ps -a | grep -E "ollama|open-webui"2. 测试 API 接口curl http://localhost:11434/api/tags # 应返回包含 deepseek-r1 的模型列表3. 访问 Web 界面浏览器打开 http://[服务器IP]:3000,完成注册后:点击左下角模型选择器选择 deepseek-r1:7b开始对话测试高级配置多 GPU 分配docker update ollama --gpus '"device=0,1"' # 指定使用前两块 GPU中文支持优化登录 Open WebUI进入 Settings → Global Settings设置 Default Language 为 Chinese (Simplified)常见问题解决Q1: 容器启动报错 GPU not found# 重新配置 NVIDIA 容器 sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart dockerQ2: 模型下载速度慢# 在 Ollama 容器内配置镜像加速 docker exec -it ollama bash echo 'OLLAMA_MIRROR="https://mirror.example.com"' >> /etc/ollama.envQ3: 对话历史丢失# 检查 Open WebUI 数据卷 docker inspect open-webui | grep "Mounts"应用场景示例智能客服集成import requests def ask_ai(question): response = requests.post( "http://localhost:11434/api/generate", json={ "model": "deepseek-r1:7b", "prompt": f"作为客服助手回答:{question}", "stream": False } ) return response.json()["response"]自动生成 SQL 查询性能优化建议量化部署:使用 GGUF 格式量化模型docker exec -it ollama ollama run deepseek-r1:7b-q4缓存优化:调整 Ollama 的 OLLAMA_NUM_PARALLEL 环境变量负载均衡:部署多个 Ollama 实例并使用 Nginx 分流总结本文方案相比传统部署方式具备三大优势:快速部署:一行命令完成环境搭建资源隔离:Docker 容器保证服务稳定性弹性扩展:轻松实现多模型并行服务建议企业用户在此基础上进一步:配置 HTTPS 安全访问集成 LDAP 身份验证设置自动化备份策略立即按照本指南部署您的 AI 助手吧!如有问题欢迎在评论区留言讨论。
2025年02月22日
469 阅读
0 评论
1 点赞
2024-11-23
【openwrt】通过zerotier网络连接路由器时,如何配置使用TYDD终端工具
一、创建新的接口命名为ZEROTIER,接口的协议选择DHCP客户端,接口选择已经连接的ZEROTIER适配器。修改刚刚创建的接口配置,防火墙设置,新建ZEROTIER防火墙,保存并应用二、配置防护墙端口转发配置7681端口转发,并选择ZEROTIER网络三、自定义规则iptables -I FORWARD -i ztyfejv2us -j ACCEPT iptables -I FORWARD -o ztyfejv2us -j ACCEPT iptables -t nat -I POSTROUTING -o ztyfejv2us -j MASQUERADE
2024年11月23日
184 阅读
0 评论
1 点赞
2024-10-24
Git 操作指南:分支、标签和归档
在版本控制系统 Git 中,管理和维护代码的不同版本是一项常见任务。本文将详细介绍如何在 Git 中创建、切换、推送、删除分支、标签以及归档版本。目录创建分支切换分支推送分支删除分支创建和管理标签归档版本一、创建分支1. 创建本地分支要创建一个新的本地分支,可以使用 git checkout 或 git switch 命令:使用 git checkout 命令:git checkout -b <branch-name>使用 git switch 命令:git switch -b <branch-name>例如,创建一个名为 feature-branch 的分支:git checkout -b feature-branch # 或者 git switch -b feature-branch2. 推送分支到远程仓库创建本地分支后,可以将其推送到远程仓库:使用 git push 命令:git push origin <branch-name>例如,将 feature-branch 推送到远程仓库:git push origin feature-branch二、切换分支1. 切换到本地分支要切换到已有的本地分支,可以使用 git checkout 或 git switch 命令:使用 git checkout 命令:git checkout <branch-name>使用 git switch 命令:git switch <branch-name>例如,切换到 main 分支:git checkout main # 或者 git switch main三、推送分支1. 推送本地分支到远程仓库要将本地分支推送到远程仓库,可以使用 git push 命令:使用 git push 命令:git push origin <branch-name>例如,将 feature-branch 推送到远程仓库:git push origin feature-branch四、删除分支1. 删除本地分支要删除本地分支,可以使用 git branch 命令:使用 git branch -d 命令:git branch -d <branch-name>如果分支未合并,可以使用 -D 选项强制删除:git branch -D <branch-name>例如,删除本地分支 feature-branch:git branch -d feature-branch # 或者 git branch -D feature-branch2. 删除远程分支要删除远程分支,可以使用 git push 命令:使用 git push --delete 命令:git push origin --delete <branch-name>例如,删除远程分支 feature-branch:git push origin --delete feature-branch五、创建和管理标签1. 创建标签要创建一个标签,可以使用 git tag 命令:使用 git tag 命令:git tag <tag-name>例如,创建一个名为 v1.0 的标签:git tag v1.02. 推送标签到远程仓库创建标签后,可以将其推送到远程仓库:使用 git push 命令:git push origin <tag-name>例如,将 v1.0 标签推送到远程仓库:git push origin v1.03. 删除标签(1)删除本地标签要删除本地标签,可以使用 git tag 命令:使用 git tag -d 命令:git tag -d <tag-name>例如,删除本地标签 v1.0:git tag -d v1.0(2)删除远程标签要删除远程标签,可以使用 git push 命令:使用 git push --delete 命令:git push origin --delete <tag-name>例如,删除远程标签 v1.0:git push origin --delete v1.0六、归档版本1. 创建归档文件要创建一个归档文件,可以使用 git archive 命令:使用 git archive 命令:git archive --format=tar.gz -o <archive-file> <commit-ish>例如,创建一个包含版本 v1.0 的归档文件 v1.0.tar.gz:git archive --format=tar.gz -o v1.0.tar.gz v1.02. 解压归档文件要解压归档文件,可以使用相应的解压命令:使用 tar 命令:tar -xzvf <archive-file>例如,解压 v1.0.tar.gz 文件:tar -xzvf v1.0.tar.gz其他命令# 1. 还原当前分支代码为远程 main 分支的状态 git fetch origin git reset --hard origin/main # 2. 将 v2.0 分支的更改合并到当前分支(覆盖) git merge --strategy=ours v2.0 # 3. 强制推送到远程 main 分支 git push -f origin main总结本文详细介绍了在 Git 中创建、切换、推送、删除分支、标签以及归档版本的操作。希望这些信息能帮助你更好地管理和维护代码版本。
2024年10月24日
66 阅读
0 评论
0 点赞
1
2
...
22
您的IP: