既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

1. docker 安装

以 ubuntu 为例,可参见官网文档:
https://docs.docker.com/engine/install/ubuntu/。

  • Add Docker's official GPG key
  • # 1. Add Docker's official GPG key:
    sudo apt update
    sudo apt install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
  • Add the repository to Apt sources
  • # 2. Add the repository to Apt sources:
    sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
    Types: deb
    URIs: https://download.docker.com/linux/ubuntu
    Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
    Components: stable
    Signed-By: /etc/apt/keyrings/docker.asc
    EOF

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • 更新软件包索引并安装最新版本
  • # 3. Install latest version
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 检查是否安装成功
  • # 4. Check installation
    sudo docker ps
    sudo systemctl status docker

    2. ollama 安装

    2.1. 无GPU方式:CPU only

    • way1: 使用默认 docker network
    # 默认 docker network: dify 和 ollama 需要通过 ip 地址相互访问
    sudo docker run -d -e TZ="Asia/Shanghai" -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
    • way2: 为 ollama 和后续的 dify 指定专用 docker 网络 llm-net:好处是 dify 和 ollama 可以直接通过容器名相互访问
    # 创建网络
    sudo docker network create llm-net
    # 指定运行于 llm-net 网络
    sudo docker run -d -e TZ="Asia/Shanghai" --network llm-net -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

    2.2. 有GPU方式:Nvidia GPU

    以 nvidia gpu 为例。

  • 安装和配置 NVIDIA Container Toolkit
  • # 1. Configure the repository
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey 
        | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list 
        | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' 
        | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    
    # 2. Install the NVIDIA Container Toolkit packages
    sudo apt-get install -y nvidia-container-toolkit
    
    # 3. Configure Docker to use Nvidia driver
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • 验证 NVIDIA Container Toolkit 是否安装成功
  • # 检查 Docker 守护进程配置是否包含 NVIDIA 运行时
    cat /etc/docker/daemon.json
    
    # 检查 Docker 支持的运行时
    docker info | grep -i runtime

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • 拉取 ollama 容器镜像并运行容器实例
  • Way1: 使用默认 docker network

    # 使用默认 docker network
    sudo docker run -d -e TZ="Asia/Shanghai" --gpus=all -v ollama:/root/.ollama -p 11343:11434 --name ollama ollama/ollama
    
    # check ollama version
    sudo docker exec -it ollama ollama --version

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    Way2: 为 ollama 和后续的 dify 指定专用 docker 网络 llm-net

    # 为 ollama 和后续的 dify 指定专用 docker 网络 llm-net
    sudo docker run -d -e TZ="Asia/Shanghai" --network llm-net --gpus=all -v ollama:/root/.ollama -p 11343:11434 --name ollama ollama/ollama
    
    # check ollama version
    sudo docker exec -it ollama ollama --version
  • 拉取 LLM 和运行
  • # pull and run
    sudo docker exec -it ollama ollama run llama3.2
    
    # pull
    sudo docker exec -it ollama ollama pull qwen3:4b
    # run
    sudo docker exec -it ollama ollama run qwen3:4b

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    3. dify 安装

    3.1. dify 下载&解压

    下载地址:
    https://github.com/langgenius/dify

    sudo apt install unzip
    unzip dify-1.10.1.zip
    mv dify-1.10.1 dify

    3.2. 拉取容器镜像并运行

    cd dify
    cd docker
    cp .env.example .env
    docker compose up -d

    关于是否需要 cp middleware.env.example middleware.env:

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    基础使用并不需要的,当需要使用 Dify 自定义插件(如自定义工具、第三方系统集成)、部署 LLM 网关等才需要。如果不确定,先只配置 .env 完成基础部署,后续需要中间件时再补充 middleware.env 即可(不会影响已部署的核心服务)。

    3.3. 初始化页面设置管理员账号

    不出意外会遇到这样的问题:Setup failed: PermissionDenied (persistent) at write => permission denied Context: service: fs path:
    privkeys/7ea38bdc-c2d8-4581-9bce-bd8925a334c7/private.pemSource: Permission denied (os error 13).

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    出问题的缘由是:privkeys 目录权限不足导致的,官方说明如下。

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    解决方案:按官方给出的方案修改目录的 own 即可

    sudo chown -R 1001:1001 ./volumes/app/storage

    注意:宿主机并没有 1001 这个用户,可以通过如下命令查看:

    id -nu 1001

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    容器用户可以通过如下命令查看:

    sudo docker exec -it docker-api-1 id -u

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    这并不妨碍容器中 1001 用户拥有该目录。这是由于:文件权限的核心是 UID 数值匹配。容器内的进程以 UID 1001 运行,访问挂载目录时,系统会检查 “进程 UID” 与 “文件所有者 UID” 是否一致 —— 只要数值都是 1001,就允许读写,无需宿主机存在 UID 1001 的用户。

    权限修改之后,再次打开 http://localhost/install 就可以成功初始化并进入 dify 了:

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    4.示例1:dify + ollama + 本地 qwen3:4b

  • dify中配置本地模型:添加了上面下载的 qwen3:4b 模型
  • 既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • dify中创建“聊天助手”:指定使用 ollama 中的 qwen3:4b 模型
  • 既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    5.示例2:dify + ollama + aliyun qwen-flash

  • dify中配置 阿里云 qwen 系列模型:API Key 去 aliyun 创建并拷贝过来
  • 既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    配置成功后,可以看到 aliyun 提供的模型列表:

    既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • 本地 dify 创建一个“聊天助手”,并配置使用 aliyun 线上大语言模型
  • 既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

  • 调用线上大语言模型
  • 既想隐私又要性能?Dify+Ollama+Docker 本地/线上大模型一键切换

    © 版权声明

    相关文章

    3 条评论

    • 头像
      大发快三 读者

      我测试过ollamma放到docker里面运行大模型性能会受到限制,很容易崩溃。我当时想的是简单部署,简化企业部署大模型繁琐流程,想法很好,一切配置好了,结果一运行直接崩溃,后来又把ollama转移到宿主机安装。技术栈是springboot3+antd+milvus,也其他张良数据库。客户端采用antdx+tauri

      无记录
      回复
    • 头像
      不让女孩成年 读者

      很强,学习了🤙

      无记录
      回复
    • 头像
      霖音吖 投稿者

      收藏了,感谢分享

      无记录
      回复