基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

笔记哥 / 04-07 / 36点赞 / 0评论 / 232阅读
# 下载安装Docker   Docker官网:https://www.docker.com/ ## **自定义Docker安装路径**   Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MySoftware\Docker并将Docker安装包放在目录内,这里有个小细节,**安装包名称一定要改下**,官网下载下来的名称叫:Docker Desktop Installer.exe,一定要修改一下,不能用这个名字,否则等下在CMD命令安装的时候就会报错说被资源占用,因为Docker在安装时会解压一个一模一样名称的exe程序,重名就会导致安装失败,所以一定要改下名字。 ![](https://cdn.res.knowhub.vip/c/2504/07/6ce722f1.png?G1YAAETn9LyUAmLYvtMdbIlTE20GJLIIKiWs13vO2jfR94dASn5G6zP2h7%2b0PoO4QsydBGJQJK9gYVO9mJNVgwNF8xoB)   在文件路径输入cmd回车 ![](https://cdn.res.knowhub.vip/c/2504/07/544861ab.png?G1YAAMTXsx8n%2blrqt41u6F3ikNAMSGQRVEpYr%2ffefRrR95tAon9mH8vOh7%2f0sYw4QbQUEogiwPkAFk6cFdVJRQ5Ja%2fR7Gg%3d%3d) 输入: ```csharp ``` ```csharp .\"Docker.exe" install --installation-dir=E:\MySoftware\Docker ``` ```csharp 语法:.\”安装程序名称” install --installation-dir=指定Docker安装的路径 ``` ![](https://cdn.res.knowhub.vip/c/2504/07/96a937e3.png?G1YAAETn9LwUKODMvtMdbIlTE20GJLIIKiWs13vO2jfR9wcYlp%2fR%2boz94S%2btzyApDK%2bVwHBWJK8skAsKaBJjNxF4XiMA)   安装完成后会提示Installation sueceeded ![](https://cdn.res.knowhub.vip/c/2504/07/9483baec.png?G1cAAMTydJz4c3h0G3X4NlEk2gxYpBFUSliv5%2f%2f3uUTezwgmf88%2blp0Pv%2bljmQQFc61CMCPChYhAMqIVdSE1TVoLst%2fTAA%3d%3d)   桌面会出现Docker图标 ![](https://cdn.res.knowhub.vip/c/2504/07/f757d648.png?G1UAAMTsdJxIfBqi26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgfjis9offr%2b8JfWp1PKDDUjMJQFQQsnQMVMSyiaudaa4xoO)   启动Docker这里很多人会报这个错,这个是因为电脑没有WSL导致无法启动Docker容器。 ![](https://cdn.res.knowhub.vip/c/2504/07/679fac4b.png?G1YAAMTsdJzIJ0Kj26hD2jvFHc2ARBZBpYT1es9Z%2byb6fheIxme0Pn1%2f%2bEvr04kLJJuRQDIUwUOYc03VWIOmi5MBHNdw) # 下载WSL   进入微软官网按步骤执行即解决,几分钟完成。 ![](https://cdn.res.knowhub.vip/c/2504/07/606896d0?G20AAMTW3DY0fyxNbRtnlJ6InuDVBRtwwhZ6psHE54pqyBHDT6Jz%2bLG3kmb3foeHX%2f6MZOQGHJ1eVyrmwapobIt185CBA0BHRmSBFlsfqkwTxRoXh2BwqvwI)   用**管理员身份打开Powershell窗口**,粘贴微软官网的命令执行下载即可 粘贴执行: ```csharp dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` ```csharp dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` ```csharp wsl --set-default-version 2 ``` ![](https://cdn.res.knowhub.vip/c/2504/07/d44ca743.png?G1YAAMTydJz4c55%2buo06fJsoEpoBiSyCSgnr9Z6z9i3y%2fU5Q4zNan74%2f%2fKX16ZIqWMyEYIEieDARKWdTBFqtehVYXMMB)   下载完后会启动一个这个页面,可以关闭。 ![](https://cdn.res.knowhub.vip/c/2504/07/2e8ee055.png?G1YAAGSd87ygk1r8TjyqCQIJNAMSWQSVEtbrPWftG%2bD7g5E1P6P1GfvDX1qfAWTIxR0YuaAgeUEyVFG7PKkZVa5e8xoB)   注:完成内核更新包安装后需重启系统(微软官方指南),再启动下Docker,出现这个界面就代表WSL和Docker都启动成功了。 ![](https://cdn.res.knowhub.vip/c/2504/07/3cb1482b.png?G1YAAETn9LyUAkPMvtMdbIlTE20GJLIIKiWs13vO2jfR94dArvyM1mfsD39pfQZxgVitJBCDInkFFxRmdiR1UxeH5DUC) ## Docker镜像存储迁移   这时进入Docker设置中,将Docker的镜像资源存放路径改一下,不然都会下载都C盘。 ![](https://cdn.res.knowhub.vip/c/2504/07/7e7921ea.png?G1cAAMTsdJxI8pGi26hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bE3r00kuhpVCYBgrQlAWqCWUXINADchSJa7h) ## Docker**镜像源加速配置**   **至关重要的地方来了**,打开Docker的设置中的-->Docker Engine,然后把国内的镜像源复制进去保存,我这里提供一些,如果失效了就百度找新的。 ```csharp { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud", "https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com", "https://5tqw56kt.mirror.aliyuncs.com", "https://docker.1panel.live", "http://mirrors.ustc.edu.cn/", "http://mirror.azure.cn/", "https://hub.rat.dev/", "https://docker.ckyl.me/", "https://docker.chenby.cn", "https://docker.hpcloud.cloud", "https://docker.m.daocloud.io" ] }   ``` ![](https://cdn.res.knowhub.vip/c/2504/07/46ce176a.png?G1cAAMTW3DgpDwhZ22gDdWfqnTUDFmkElRLW6%2fn%2ftS%2bi9wuBlHyP1mfsD79pfQaxQ6xWEohBkYKCnR3KKInPo7ipmOU1Ag%3d%3d)   保存镜像源后就可以试一下拉取镜像,如果拉取不成功也可以重启下Docker,还是不行提示超时就说明镜像源失效了,就在网上搜索下新的镜像源。 ## 测试拉取镜像   在cmd命令窗口输入: ```csharp docker pull hello-world ```   出现这个Status: Dowloaded newer image for hello-world:latest就代表镜像源没有问题。 ![](https://cdn.res.knowhub.vip/c/2504/07/9a7665ee.png?G1cAAMTsdJxI8hG026hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bE3r00kyw2olMIwVIShLhomZ1gAulxSTjLiGAw%3d%3d) # **安装** **Dify** ## 下载Dify代码包   进入github下载Dify代码包:![](https://cdn.res.knowhub.vip/c/2504/07/ed0898f2?ixCAaHR0cHM6Ly9naXRodWIuY29tL2xhbmdnZW5pdXMvZGlmeQM%3d) ![](https://cdn.res.knowhub.vip/c/2504/07/36ad13b0.png?G1YAAMTW3DgpDwZS22gDdWfqnTUDElkElRLW6%2fn%2ftS%2bi9wuBHPkerc%2fYH%2f7S%2bgxig6g7CURRkHwB18JQgyfz0yorPK8R)   解压代码包后,把压缩后的文件夹复制到自己想要安装的目录下,这里复制一下.env.example文件,然后重命名一下改成.env ![](https://cdn.res.knowhub.vip/c/2504/07/26397fb6.png?G1cAAMTsdJzIJxGl26hD2jvFHc2ARRpBpYT1es9Z%2byb6fhdIis9offr%2b8JvWpxNniJVCAjEoQlBwYRhnRWBV1EtRLa7h)   在当前文件路径下输入CMD回车 ![](https://cdn.res.knowhub.vip/c/2504/07/7851a3c1.png?G1YAAMTW3Dgp8EhR22gDdWfqnTYDElkElRLW6917rpvo%2bwOMkp9e24j14S%2b1jSA5GOZOYBgrklcWh4oILJlpOU35yrMH) ## 拉取Dify依赖镜像资源   粘贴以下命令回车,会自动下载一些依赖资源。如果你的下载失败就是镜像源失效了,换一个镜像源,重新拉取镜像。 ```csharp docker-compose up -d ``` ![](https://cdn.res.knowhub.vip/c/2504/07/2316e1e5.png?G1UAAMT0bJxoe4XGNvqh%2f4lHQjMgkUVQKWG93nv3aUTf72Ck%2bMw%2blp8Pf%2bljOUlhZDMCI7MiaGUxIKnUFIqhQizHPR0%3d)   下载完成 ![](https://cdn.res.knowhub.vip/c/2504/07/376b0047.png?G1YAAMT0bJzo9YqIbfRD%2fxOPhGZAIougUsJ6vffu00S%2b3wmm%2bMw%2blp8Pf%2bljuWgBc61CMMMQvEEri5kmBFUUKjLing4%3d)   回到Docker可以都看到已经下载好的镜像全部都显示了,并且都在运行。 ![](https://cdn.res.knowhub.vip/c/2504/07/01927eb0.png?G1cAAETn9LwUKNPAvtMdbIlTE20GLNIIKiWs13vO2jfR9wcYV35G6zP2h9%2b0PoOkMooZgVFYkYKyGIzhogmsXt2qe14jAA%3d%3d) ## **进入** **Dify后台**   输入![](https://cdn.res.knowhub.vip/c/2504/07/a810ad31?CyaAaHR0cDovLzEyNy4wLjAuMS%2fkvJroh6rliqjmiZPlvIBEaWZ555qE6aG16Z2i77yM5pyJ5Lq65Lya6YGH5Yiw6L%2bZ5LiqSW50ZXJuYWwD) Server Error报错,这是因为镜像下载来后,有部分镜像还在启动中或未启动,这时候将所有镜像重启一次才可以。 ![](https://cdn.res.knowhub.vip/c/2504/07/99bb7f9c.png?G1cAAETn9LyUAmLYvtMdbIlTE20GLNIIKiWs13vO2jfR94dASn5G6zP2h9%2b0PoO4QsydBGJQpKBgV1ZTWGKpRYrj0rxGAA%3d%3d)   重启所有镜像 ![](https://cdn.res.knowhub.vip/c/2504/07/4d8b1c7d.png?G1cAAMT0bJzotSnUNvqh%2f4lHQjNgkUZQKWG93nv3aUTf7wLR%2bMw%2blp8Pv%2bljOXGGpFpJIAmKEKAwGBdIDQxDUStZ454O) ## 创建管理员用户   重新进入Dify管理后台,首次进入需创建管理员用户。 ![](https://cdn.res.knowhub.vip/c/2504/07/3776d55a.png?G1YAAGQ9PS9abdH6Tju6JYaEZkAii6BSwnq99%2b7TAL7fCUniM%2ftYfj78pY%2flkApSVgVCysgInjEpFxFjC6UaklXVuKcD)   创建管理员用户后,将进入登录界面。 ![](https://cdn.res.knowhub.vip/c/2504/07/d547e1f0.png?G1YAAMTsdJzIJymi26hD2jvFHc2ARBZBpYT1es9Z%2byb6fhfIFZ%2fR%2bvT94S%2btTyfOkGRGAklQBK9g0wrWhGBFcpVcOK7h)   登录成功 ![](https://cdn.res.knowhub.vip/c/2504/07/59cfec5c.png?G1cAAMTsdJzIS0ij26hD2jvFHc2ARRpBpYT1es9Z%2byb6fmdwjs9offr%2b8JvWp1NScDEjBhcIQhAkkyqA5ZBYcrlUtcY1HA%3d%3d) ## 添加AI模型   点击右上角头像-设置 成员这里可以创建企业内成员进行登录使用。 ![](https://cdn.res.knowhub.vip/c/2504/07/d2fee5b9.png?G1YAAMTsdJzIJ4G026hD2jvFHc2ARBZBpYT1es9Z%2byb6fhdIis9offr%2b8JfWpxMXSDYjgWQoglewJWgFW8hSr6QVHNdw)   选择模型供应商   这里我本地已经安装部署好了Ollama和Deepseek R1和BGE-M3模型,如果没有部署好的请看我这篇文章**:本地电脑部署DeepSeek 大模型AI** ![](https://cdn.res.knowhub.vip/c/2504/07/b26ae342.png?G1cAAMTsdJzIJ4S026hD2jvFHc2ARRpBpYT1es9Z%2byb6fhdIjs9offr%2b8JvWpxMXiJqRQBQJISSwZVawauAEQS2XaVzDAQ%3d%3d)   由于我本地已经安装好了Ollama,所以就找到Ollama,点击安装插件,其他供应商选择对应安装。下载可能稍慢,请耐心等待。 ![](https://cdn.res.knowhub.vip/c/2504/07/32b759a6.png?G1cAAMR0rnGCfjyn24hDNUEggWbAIo2gUsJ6veesfRN9vytris9offr%2b8JvWp5MU1gyQsmY2hGAsSGpaLgQBBBUVNa7h) ![](https://cdn.res.knowhub.vip/c/2504/07/7680d0c1.png?G1cAAMTmtHFS4Pyg22gH2sSqiW0GLNIIKiWs1%2fP%2f%2b1xE7%2bdg5HjPPpafD7%2fpYzlJZRRVAqNwQgiJRbNJa4ogFc3YxHLc0wE%3d)   添加模型时,若不知模型名称,可在CMD中输入Ollama list查看本地模型名称并复制。 ![](https://cdn.res.knowhub.vip/c/2504/07/963856ad.png?G1QAAMTsdJzIJwml26hD2jvFHc2ARBZBpYT1es9Z%2byb6fheIxWe0Pn1%2f%2bEvr04kzJJVCAkkwBAtD5apIxoEvlaKIazg%3d) 模型类型: 推理模型 → LLM 嵌入模型 → Text Embedding 模型名称就把刚刚复制下来的粘贴上去就可以了。 这里IP地址要注意了,由于我没有用Docker容器里部署Ollama,而是在本地电脑安装的Ollama,这里对IP就要进行特殊处理下了,需要改为:![](https://cdn.res.knowhub.vip/c/2504/07/cff8d79f.internal:11434。?ixGAaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjExNDM044CCAw%3d%3d) 网络通信原理: host.docker.internal为Docker内置域名解析,实现容器与宿主机服务的桥接。简单说就是Docker自己和我们电脑主机网络做了一个映射关系。 ![](https://cdn.res.knowhub.vip/c/2504/07/f73a929c.png?G1YAAETn9LyUQkDZvtMdbIlTE20GJLIIKiWs13vO2jfR94dAND%2bj9Rn7w19an0FcIOZOAjEokofiEudq0OTMpVYF5zUC)   模型添加完成 ![](https://cdn.res.knowhub.vip/c/2504/07/aaa57234.png?G1cAAMT0bJzotUXKNvqh%2f4lHQjNgkUZQKWG93nv3aUTf7wJJ8Zl9LD8fftPHcuICyWYkkAxFCAquMGixFJi1IqeqFvd0) ## 创建应用   其实我也不太会使用,就简单粗糙的做个示范吧,要深入研究需要找下资料学习下。 这里我选择创建聊天助手(每个不同应用的作用不一样,选择与自己相符的就行) ![](https://cdn.res.knowhub.vip/c/2504/07/60e57b19.png?G1cAAMTydJz4c7y8bqMO3yaKRJsBizSCSgnr9fz%2fPpfI%2bznBEu%2fZx%2fLz4Td9LJdUQTUTgoqMEDJSQ2NC0UBYNS2tatzTAQ%3d%3d)   添加一些提示词、变量、知识库、模型,设置好后在右边可以调试预览效果,调试完成后就可以发布应用了。 ![](https://cdn.res.knowhub.vip/c/2504/07/f96e8a42.png?G1cAAOTcVkxw9wu2iOF0Q2CDZsAijaBSwnq956x9A3x%2fMLLmZ7Q%2bY3%2f4TeszgBzZSgFGNhSkIEgVq5mKJxJVdmG68hoB) ![](https://cdn.res.knowhub.vip/c/2504/07/297aa685.png?G1YAAGQ9PS9abUv5Tju6JYaEZkAii6BSwnq99%2b7TAL7fCUniM%2ftYfj78pY%2flkDKSmgEhKTKCZ0xVChvnHETFKlcucU8H)   这里提一句,由于我自己的电脑资源很一般,所以每次一提问的时候资源就占比很高,不过等AI思考完毕后资源占用会下降。 ![](https://cdn.res.knowhub.vip/c/2504/07/01e28ec1.png?G1YAAETn9LwUKJPIvtMdbIlTE20GJLIIKiWs13vO2jfR9wcYV35G6zP2h7%2b0PoPEGKVWAqOwInllcRFhN01iMJjD8xoB)   测试结果,虽然回答是错误的。 ![](https://cdn.res.knowhub.vip/c/2504/07/15f170b4.png?G1cAAMTsdJxI8hKNbqMO2jvFHc2ARRpBpYT1es9Z%2byb6%2fgaGxmfUPtv%2b8JvaZyPJDHMnMIwTQkgsRVWAy4KIKzKbl7hGAw%3d%3d) # 知识库测试   我这里测试了下知识库检索,上传了6个本地文档。 ![](https://cdn.res.knowhub.vip/c/2504/07/012cac90.png?G1YAAMT0bJxoXVXKNvqh%2f4lHQjMgkUVQKWG93nv3aUTf72Dk%2bMw%2blp8Pf%2bljOaXCUDMCQ1kQvDAYWWBVQyliqSpr3NMB)   然后我简单的定义了提示词后,对模型提出问题:结合知识库帮我找出住在向阳里桃源弄的人员的电话和姓名。 ![](https://cdn.res.knowhub.vip/c/2504/07/b46132fb.png?G1cAAMTsdJxIfIS026hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjx2e0Pn1%2f%2bE3r0ykVhpoRGMqCEITByHoltZCqVBFTLXENBw%3d%3d)   然后真的回答对了,全体起立! ![](https://cdn.res.knowhub.vip/c/2504/07/1953bc58.gif?G1UAAMS25fNVXpol%2fZ4N5oK2BtUMSGQRVEpYr%2becfzei8TqDc7y%2bPpfvD3%2fpczmlAlYzYrAiI2jkVMQSRCQYatGqHH3c)   这是源文件里的内容。 ![](https://cdn.res.knowhub.vip/c/2504/07/f9be10e9.png?G1cAAMTydJz4c%2fhgG3X4NlEkNAMWaQSVEtbrvXefJvL9RjD5Z%2fax7Hz4TR%2fLJCiYSxGCGREuRBDUBGR1QQuT1kr1exo%3d) # WSL资源控制   由于我是针对个人学习,在学习完后我发现我的电脑内存占比一直居高不下,在任务管理器查到了是一个Vmmem的进程占用,大概也知道应该是虚拟机类的占用。   搜索了下网上资源了解到vmmem是一个由WSL(Windows Subsystem for Linux)创建的虚拟进程,主要用于管理WSL2的内存和CPU资源。当WSL2运行时,Vmmem进程会占用大量的内存和CPU资源,以确保虚拟机的最佳性能。然而,这可能会导致主机系统的其他应用程序运行缓慢或无法正常运行‌。 ![](https://cdn.res.knowhub.vip/c/2504/07/08697b1c.png?G1YAAOQ8bZy4F8c26nBtokhoBiSyCColrNd77z4N4PudkTU%2bs4%2fl58Nf%2blgOlJGTGTByQkHwQliFiKrlwIpaqWiJezo%3d) ## 关闭WSL服务   所以如果不用的时候可以关闭掉WSL服务。 在cmd里输入: ```csharp wsl --shutdown ``` ![](https://cdn.res.knowhub.vip/c/2504/07/a823c9aa.png?G1YAAMTsdJxI8hG026hD2jvFHc2ARBZBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bEvr00kyw2olMIwVwSuDE4tIsZAyTLXiims4)   关闭后电脑资源就回到正常状态了。 ## 启动WSL服务   那如果我们后再用的时候就重新启动WSL服务就可以。 在cmd输入: ```csharp wsl ``` ![](https://cdn.res.knowhub.vip/c/2504/07/23ae3ddc.png?G1cAAETn9LwUKGLYvtMdbIlTE20GLNIIKiWs13vO2jfR9wcYJT%2bj9Rn7w29an0FSGeZOYBgrUlARhpnbpUmKVoYIPK8R) # 最后的最后   关于Dify的作用文中提到的只是冰山一角,它真正的厉害之处是它的工作流,由于博主知识有限,只能教大家部署应用,具体的功能开发使用还要大家自行学习,后续博主也会去学习Dify的相关知识,有机会的话就再开一贴。如有讲的不对的地方,敬请指正。 附上Dify的官方操作手册地址:![](https://cdn.res.knowhub.vip/c/2504/07/092535e1?iw2AaHR0cHM6Ly9kb2NzLmRpZnkuYWkvemgtaGFucwM%3d)   这是我整个学习过程中遇到的问题,最后结合百度和AI最后都完成解决了。 总结几个小坑: 1、WSL2的安装。 2、Docker容器镜像源的设置。 3、Dify依赖镜像的拉取。 4、Dify添加模型时IP映射设置。![](https://cdn.res.knowhub.vip/c/2504/07/c44d73b0.png?G1cAAER17rxgXWGIfice0wSBBJsBizSCSgnr9fz%2f2pfI%2bznBHO%2fR%2bvT94TetTxctoNUqBA0JISToaUVxwAI1ZVQjGddw)