发布时间:2025-06-24 19:27:50  作者:北方职教升学中心  阅读量:710


gpg --dearmor 命令将 ASCII 格式的密钥转换为二进制格式

  • sudo chmod a+r /etc/apt/keyrings/docker.gpg:设置密钥文件的权限,使得所有用户都可以读取这个文件。默认情况下,这个套接字的权限设置为只有 root 用户可以访问,因此普通用户需要使用 sudo 来运行 Docker 命令。这里指定的是 ollama/ollama 镜像,通常是从 Docker Hub 获取的镜像。

    sudo gpasswd -a $USER docker
  • 激活组变更

    使用 newgrp命令使组变更立即生效

    newgrp docker
  • 测试 Docker 命令

    运行 docker run hello-world命令,检查是否可以在没有 sudo的情况下成功运行 Docker 命令。它调用了 ollama应用程序,并加载了 llama3模型。

  • v ollama:/root/.ollama
    • 将主机上的卷 ollama 挂载到容器的 /root/.ollama 路径。                                                               gnupg:GNU Privacy Guard,用于处理 GPG 密钥和加密。容器会在后台运行,而不会占用当前终端。刚刚通过 docker run命令启动了这个容器,并给它指定了名称 ollama
    • signed-by=/etc/apt/keyrings/docker.gpg:指定用于验证软件包的 GPG 密钥文件。
  • | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null:将生成的软件源配置写入到 /etc/apt/sources.list.d/docker.list 文件中。
  • ollama run llama3
    • 这是在容器内执行的命令。
    • docker pull <image>用于从镜像仓库拉取新镜像。jammy)。

      docker run hello-world

    Ollama Docker image的配置

    配置和安装 NVIDIA Container Toolkit

    这是一个用于在 Docker 中支持 NVIDIA GPU 的工具

    # Configure the repositorycurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -s -L 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.listsudo apt-get update# Install the NVIDIA Container Toolkit packagessudo apt-get install -y nvidia-container-toolkit
    代码解析----Install with Apt
    1. 配置 NVIDIA 软件源

    下载和安装 GPG 密钥

    curl -fsSL <https://nvidia.github.io/libnvidia-container/gpgkey> \\    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

    这条命令从 NVIDIA 的 GitHub 页面下载 GPG 密钥,用于验证软件包的来源和完整性。tee 命令将输出同时写入到文件和标准输出,> /dev/null 是为了忽略输出内容

  • 二:安装 Docker 的相关软件包

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    三:验证 Docker 安装

    安装完 Docker 后,可以运行一个简单的测试容器来验证 Docker 是否正常工作。它允许你在容器内部启动一个新的进程,通常用于调试和管理。这一步是为了确保系统知道最新的软件包信息,尤其是更新后的软件源列表

  • sudo apt-get install ca-certificates curl gnupg:安装三个工具:                                   ca-certificates:确保系统具有最新的根证书,以验证 HTTPS 连接                              curl:用于从网络下载文件的命令行工具。这样,当 Docker 守护进程启动时,它会将这个 Unix 套接字的权限设置为 docker 组可读写,从而允许 docker 组中的用户运行 Docker 命令而无需 sudo。如果这个组已经存在,这一步会被忽略。

    • 创建 Docker 用户组

      首先,创建一个名为 docker的用户组。

      • [arch=$(dpkg --print-architecture)]:指定软件包的架构,$(dpkg --print-architecture) 动态获取系统架构,如 amd64。并且将 ASCII 格式的 GPG 密钥转换为二进制格式,保存至指定的位置

        配置软件源

        curl -s -L <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

        2.安装 NVIDIA Container Toolkit 软件包
        sudo apt-get install -y nvidia-container-toolkit

        配置 Docker 以支持 NVIDIA GPU 

        sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker

        启动 Docker 容器

        docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

        • docker run
          • 这是启动一个新容器的 Docker 命令。
          • $(. /etc/os-release && echo "$VERSION_CODENAME"):动态获取当前 Ubuntu 版本的代号(如 focal、

            为了让普通用户可以不使用 sudo 运行 Docker 命令,需要将这些用户添加到一个特殊的用户组——docker 组中。

        • -name ollama
          • 给容器指定名称ollama。

            Docker的安装----在 Ubuntu 系统上安装 Docker

            一:配置系统的 APT 软件包管理器

            首先添加 Docker 的官方 GPG 密钥
            # Add Docker's official GPG key:sudo apt-get updatesudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg
            1. sudo apt-get update:更新本地的包索引。
        • ollama
          • 这是正在运行的容器的名称。
          • https://download.docker.com/linux/ubuntu:Docker 官方软件源的 URL。

         获取和管理 Docker 镜像相关操作(optional)

        • docker images用于查看本地镜像及其详细信息。
      • d
        • 表示以分离模式(后台模式)运行容器。-m 0755 设置了该目录的权限为 0755(所有者可读写执行,组和其他用户可读和执行)
        • curl -fsSL https://download.docker.com/linux/ubuntu/gpg:使用 curl 从 Docker 官方网站下载 GPG 密钥
        • | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg:将下载的 GPG 密钥转换为 .gpg 格式并保存到 /etc/apt/keyrings/docker.gpg。这个选项要求 Docker 配置为使用 NVIDIA 容器工具包(NVIDIA Container Toolkit)。
        • sudo install -m 0755 -d /etc/apt/keyrings创建一个目录 /etc/apt/keyrings,用于存放 GPG 密钥。这样 APT 工具就可以使用这个密钥进行验证。这个名称可以用来引用和管理该容器。
      • p 11434:11434
        • 将主机的端口11434 映射到容器的端口 11434。
      • -gpus=all
        • 允许容器访问主机上所有可用的 NVIDIA GPU。
      • it选项
        • i(interactive): 使容器的标准输入保持打开,以便你可以与容器内的进程进行交互。
        • stable:指定安装的软件包版本为稳定版。
        • docker inspect <image>用于查看镜像的详细配置。

          sudo docker run hello-world

          如果看到来自Hello from Docker!消息,表明已经成功安装并启动了 Docker Engine

          四:运行 Docker 命令时不需要使用 sudo

          Docker 的守护进程(daemon)以 root 用户身份运行,并通过 Unix 套接字(/var/run/docker.sock)与客户端(如 docker 命令行工具)通信。这使得主机上的端口 11434 可以用于访问容器内的服务。

        镜像拉取机制

        当执行 docker run命令时,如果 Docker 在本地找不到指定的镜像,Docker 会自动尝试从配置的镜像仓库中拉取这个镜像

        查看容器状态

        docker ps

        配置和管理容器相关的操作(optional)

        • 查看容器状态

          docker ps
        • 停止和删除容器

          docker stop ollamadocker rm ollama
        • 在容器内执行命令

          docker exec -it ollama <command>

        进入容器运行模型

        刚才使用ollama/ollama镜像创建了一个叫做ollama的容器,并绑定了端口 11434

        现在我想使用这个容器来运行llama3模型

        docker exec -it ollama ollama run llama3
        • docker exec命令
          • docker exec是用来在一个已经运行的容器内执行命令的。
          • 然后将 Docker 的软件源添加到 Apt 源
            echo \  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \  sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update
            • echo:生成 Docker 软件源的配置行。卷用于持久化数据,即使容器被删除,数据也会保留在卷中。

          现在就可以和模型对话了

          或者也可以尝试其他的模型library

          参考:

          https://hub.docker.com/r/ollama/ollama

          https://medium.com/devops-technical-notes-and-manuals/how-to-install-docker-on-ubuntu-22-04-b771fe57f3d2

  • sudo groupadd docker
  • 将当前用户添加到 Docker 组

    将当前用户添加到 docker组,以便该用户可以执行 Docker 命令。

  • t(tty): 为容器分配一个伪终端,这使得你可以以终端模式运行命令。
  • ollama/ollama
    • 要使用的 Docker 镜像