首页
博客小事纪
网站统计
友情链接
推荐
百度一下
文心一言
通义千问
Search
1
openEuler 操作系统用户权限管理——sudo 权限的授予与限制案例
325 阅读
2
基于 openEuler 操作系统的 VNC(noVNC) 部署流程
293 阅读
3
基于 openEuler 操作系统使用 Sealos 构建 Kubernetes 高可用集群
265 阅读
4
openEuler 搭建本地 repo 源
130 阅读
5
初夏故宫游记
99 阅读
默认分类
openEuler
x2openEuler
云原生
生活随笔
登录
Search
标签搜索
openEuler
Docker
故宫
kubernetes
x2openEuler
Nginx
repo
VNC
SUSE
DeepSeek
Ollama
AI
闫志聪
累计撰写
15
篇文章
累计收到
0
条评论
首页
栏目
默认分类
openEuler
x2openEuler
云原生
生活随笔
页面
博客小事纪
网站统计
友情链接
推荐
百度一下
文心一言
通义千问
搜索到
15
篇与
的结果
2025-04-09
使用 Ollama + Dify 本地部署 DeepSeek 构建个人知识库
1 环境准备本文所有环境基于 openEuler 22.03 LTS SP4 操作系统1.1 网络环境# 配置代理 PROXY_IP=192.168.230.1 PROXY_PORT=10809 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=socks://${PROXY_IP}:${PROXY_PORT}1.2 安装 cuda# 安装基础工具及内核开发包 $ yum install -y gcc-c++ make dkms kernel-source-$(uname -r) kernel-devel-$(uname -r) # 下载 cuda 包 $ wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS-SP4/contrib/drivers/x86_64/Packages/cuda_12.4.0_550.54.14_linux.run -P /root # 安装 cuda 包 $ sh /root/cuda_12.4.0_550.54.14_linux.run ...... =========== = Summary = =========== Driver: Installed Toolkit: Installed in /usr/local/cuda-12.4/ Please make sure that - PATH includes /usr/local/cuda-12.4/bin - LD_LIBRARY_PATH includes /usr/local/cuda-12.4/lib64, or, add /usr/local/cuda-12.4/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.4/bin To uninstall the NVIDIA Driver, run nvidia-uninstall Logfile is /var/log/cuda-installer.log # 配置 PATH 变量 $ sed -i \ -e '$a \ ' \ -e "\$a export PATH=$PATH" \ -e '$a export PATH=$PATH:/usr/local/cuda-12.4/bin' \ /etc/profile # 刷新 /etc/profile 文件 $ source /etc/profile # 配置库文件 $ sed -i '$a /usr/local/cuda-12.4/lib64' /etc/ld.so.conf # 刷新动态链接库 $ ldconfig # 查看 Nvidia 驱动版本 $ nvidia-smi # 查看 cuda 版本 $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Tue_Feb_27_16:19:38_PST_2024 Cuda compilation tools, release 12.4, V12.4.99 Build cuda_12.4.r12.4/compiler.33961263_01.3 安装 docker1.3.1 安装 docker# 定义要安装的 docker 版本及架构(x86_64、aarch64) $ DOCKER_VERSION=26.0.0; DOCKER_ARCH=x86_64 # 从官方仓库下载二进制 docker 压缩包 $ wget https://download.docker.com/linux/static/stable/"${DOCKER_ARCH}"/docker-"${DOCKER_VERSION}".tgz -P /root # 解压下载的压缩包 $ tar -xvf /root/docker-"${DOCKER_VERSION}".tgz -C /root # 复制解压的命令到 /usr/bin 目录 $ cp /root/docker/* /usr/bin # 创建 docker 组,否则会有 could not change group /var/run/docker.sock to docker: group docker not found 的警告信息,并且 cir-docker 会启动失败 $ groupadd docker # 编写启动文件 $ cat > /etc/systemd/system/docker.service <<"EOF" [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target EOF # 配置代理 $ mkdir -p /etc/systemd/system/docker.service.d cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF [Service] Environment="HTTP_PROXY=http://${PROXY_IP}:${PROXY_PORT}" Environment="HTTPS_PROXY=http://${PROXY_IP}:${PROXY_PORT}" Environment="NO_PROXY=localhost,127.0.0.1" EOF # 修改 cgroup 为 systemd,修改日志驱动 $ [ ! -d "/etc/docker" ] && mkdir /etc/docker cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } } EOF # 重新加载配置 $ systemctl daemon-reload # 启动(重启) docker $ systemctl restart docker && systemctl enable docker # 查看代理、Cgroup 驱动、日志驱动配置 $ docker info | grep -E "Proxy|Cgroup Driver|Logging Driver" Logging Driver: json-file Cgroup Driver: systemd HTTP Proxy: http://192.168.230.1:10809 HTTPS Proxy: http://192.168.230.1:10809 No Proxy: localhost,127.0.0.11.3.2 安装 docker-compose# 创建插件目录 $ mkdir -p /usr/libexec/docker/cli-plugins # 定义要安装的 docker-compose 版本及架构(x86_64、aarch64) $ COMPOSE_VERSION=2.33.0; COMPOSE_ARCH=x86_64 # 从官方仓库下载二进制 docker-compose 命令 $ wget https://github.com/docker/compose/releases/download/v"${COMPOSE_VERSION}"/docker-compose-linux-"${COMPOSE_ARCH}" -P /root # 安装 docker-compose $ install -m 755 /root/docker-compose-linux-"${COMPOSE_ARCH}" /usr/libexec/docker/cli-plugins/docker-compose # 验证 docker-compose 是否安装成功 $ docker compose version Docker Compose version v2.33.02 安装(卸载)ollama2.1 安装 ollama2.1.1 在线安装参考文档:ollama/docs/linux.md at main · ollama/ollama · GitHub# 安装 ollama(若不指定版本则安装最新版本) $ curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.11 sh # 修改 ollama 监听地址,默认监听在回环网卡 $ sed -i '/^Environment=.*/i Environment="OLLAMA_HOST=0.0.0.0:11434"' /etc/systemd/system/ollama.service # 重新加载配置 $ systemctl daemon-reload # 重新启动 ollama $ systemctl restart ollama # 查看监听的地址 $ netstat -anpt | grep ollama tcp6 0 0 :::11434 :::* LISTEN 110562/ollama2.1.2 本地安装参考文档:ollama/docs/linux.md at main · ollama/ollama · GitHub# 指定要安装的 ollama 版本及架构(amd64、arm64) $ OLLAMA_VERSION=0.5.11; OLLAMA_ARCH=amd64 # 下载安装包 $ wget https://github.com/ollama/ollama/releases/download/v"${OLLAMA_VERSION}"/ollama-linux-"${OLLAMA_ARCH}".tgz -P /root # 解压并安装 $ tar -xvf /root/ollama-linux-"${OLLAMA_ARCH}".tgz -C /usr # 创建 ollama 用户、组 $ useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama usermod -a -G ollama $(whoami) # 编写 service 文件 $ cat > /etc/systemd/system/ollama.service <<EOF [Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="PATH=$PATH" [Install] WantedBy=default.target EOF # 重载配置文件 $ systemctl daemon-reload # 启动 ollama 并设置开机自启 $ systemctl start ollama && systemctl enable ollama # 查看监听的地址 $ netstat -anpt | grep ollama tcp6 0 0 :::11434 :::* LISTEN 2650/ollama2.2 卸载 ollama# 停止 ollama 服务 $ systemctl stop ollama && systemctl disable ollama # 删除 service 文件 $ rm -rf /etc/systemd/system/ollama.service # 删除 ollama 二进制文件 $ rm -rf $(which ollama) # 删除 ollama 库文件 $ rm -rf /usr/local/lib/ollama # 删除 ollama 用户、组 $ groupdel ollama userdel ollama # 删除家目录(同时会删除家目录下的大模型文件) $ rm -rf /usr/share/ollama2.3 ollama 使用指南2.3.1 命令使用指南$ ollama Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama # 启动 ollama 服务 create Create a model from a Modelfile # 从 Modelfile 文件创建模型 show Show information for a model # 显示模型信息 run Run a model # 运行模型,若不存在则先下载 stop Stop a running model # 停止正在运行的模型 pull Pull a model from a registry # 从仓库拉取模型 push Push a model to a registry # 推送模型到仓库 list List models # 列出所有模型 ps List running models # 列出正在运行的模型并查看资源消耗 cp Copy a model # 复制模型 rm Remove a model # 删除模型 help Help about any command # 查看命令帮助 Flags: -h, --help help for ollama # 查看命令帮助 -v, --version Show version information # 查看版本2.3.2 相关环境变量(1)OLLAMA_HOST:指定 ollama 服务的监听地址及端口参考文档:ollama/api/client.go at main · ollama/ollama · GitHub使用场景:ollama 服务默认监听地址为 127.0.0.1,需要从外部访问或调用 ollama 服务使用方法:指定监听的地址和端口 OLLAMA_HOST=0.0.0.0:11434(2)OLLAMA_NUM_PARALLEL:每个模型同时处理的并行请求的最大数量参考文档:ollama/docs/faq.md at main · ollama/ollama · GitHub使用场景:每个模型需要处理多个并发使用方法:默认值将根据可用内存自动选择 4 或 1,若有需要可以手动调整 OLLAMA_NUM_PARALLEL=10(3)OLLAMA_MAX_QUEUE:当 ollama 忙碌时,它在拒绝额外请求之前将排队的最大请求数量参考文档:ollama/docs/faq.md at main · ollama/ollama · GitHub使用场景:调整 ollama 忙碌时可以排队的最大请求数量使用方法: 默认值是 512,若有需要可以手动调整 OLLAMA_MAX_QUEUE=256(4)OLLAMA_MAX_LOADED_MODELS:可同时加载的最大模型数量参考文档:ollama/docs/faq.md at main · ollama/ollama · GitHub使用场景:同时需要加载多个模型(如果已加载一个或多个模型时,没有足够的可用内存来加载新的模型请求,所有新的请求将被排队,直到新模型能够被加载。当先前的模型变为闲置时,将卸载一个或多个模型以腾出空间给新模型。排队的请求将按顺序处理。在使用 GPU 推理时,新模型必须能够完全适应 VRAM,以允许并发加载模型。)使用方法:默认值为 CPU 或 GPU 的 3 倍,若有需要可以手动调整 OLLAMA_MAX_LOADED_MODELS=6(5)CUDA_VISIBLE_DEVICES:限制 ollama 可使用的 NVIDIA 显卡参考文档:ollama/docs/gpu.md at main · ollama/ollama · GitHub使用场景:系统中有多块 NVIDIA 显卡,需要限制 ollama 只使用其中一部分或完全不使用显卡使用方法:使用数字 ID:执行 nvidia-smi 命令获取显卡的序号,然后定义环境变量 CUDA_VISIBLE_DEVICES=0,1使用 UUID:执行 nvidia-smi -L 命令获取显卡 UUID,然后定义环境变量 CUDA_VISIBLE_DEVICES=GPU-1831a5ee-622a-7e65-06cc-d57de8902585,GPU-d21e966e-7a89-884f-d0b2-444d371bb8f9不使用显卡:若想忽略显卡并强制使用 CPU,可以使用一个无效的 GPU ID,例如 CUDA_VISIBLE_DEVICES=-13 安装(使用)Dify3.1 安装 Dify参考文档:Docker Compose 部署 | Dify# 克隆 Dify 源代码至本地环境 $ git clone https://github.com/langgenius/dify.git # 进入 Dify 源代码目录 $ cd dify # 切换到需要的版本 $ git checkout 0.15.3 # 进入 Dify 源代码的 Docker 目录 $ cd docker # 复制环境配置文件 $ cp .env.example .env # 启动 Docker 容器 $ docker compose up -d [+] Running 74/74 ✔ api Pulled 211.9s ✔ sandbox Pulled 213.7s ✔ redis Pulled 161.0s ✔ weaviate Pulled 8.8s ✔ worker Pulled 211.9s ✔ db Pulled 157.2s ✔ web Pulled 133.0s ✔ ssrf_proxy Pulled 83.6s ✔ nginx Pulled 19.2s [+] Running 11/11 ✔ Network docker_default Created 0.0s ✔ Network docker_ssrf_proxy_network Created 0.0s ✔ Container docker-web-1 Started 0.4s ✔ Container docker-sandbox-1 Started 0.3s ✔ Container docker-ssrf_proxy-1 Started 0.5s ✔ Container docker-redis-1 Started 0.3s ✔ Container docker-weaviate-1 Started 0.4s ✔ Container docker-db-1 Started 0.4s ✔ Container docker-api-1 Started 0.5s ✔ Container docker-worker-1 Started 0.6s ✔ Container docker-nginx-1 Started 0.7s # 查看 3 个业务服务 api/worker/web,以及 6 个基础组件 weaviate/db/redis/nginx/ssrf_proxy/sandbox 是否运行 $ docker compose ps在 Windows 浏览器中访问 http://${your_server_ip}/install 进入管理员初始化页面,设置管理员账户在 Windows 浏览器中访问 http://${your_server_ip} 进入主页面
2025年04月09日
11 阅读
0 评论
0 点赞
2024-12-02
基于 openEuler 24.03 LTS 操作系统源码部署 Kubernetes 开发版本
基于 openEuler 24.03 LTS 操作系统源码部署 Kubernetes 开发版本
2024年12月02日
57 阅读
0 评论
0 点赞
2024-11-21
深秋北京游记
北京到了深秋时节,最美的莫过于映衬在黄瓦红墙下金色的银杏与夹杂在绿树青山中火红的枫叶 对于有北京最美赏秋地之称的故宫、中山公园、地坛公园等白天的照片已经看的够多了 公历2024年11月16日,正好是农历的十月十六,俗话说十五的月亮十六圆,此次也毫不例外,更是本年最后的最大满月 既已月色入户,何不欣然起行?遂至景山公园 ,记录下晚上美好的瞬间 拍摄设备:佳能 EOS R6 Mark2 + RF24-105 F4 + RF16 F2.8 {dotted startColor="#1989fa" endColor="#1989fa"/}故宫西北角楼 {lamp/}从角楼远眺神武门(一) {lamp/}银杏与神武门交相辉映 {lamp/}从角楼远眺神武门(二){lamp/}从角楼远眺神武门(三){lamp/}故宫神武门广场 {lamp/}从景山俯瞰故宫 {lamp/}景山万春亭 {lamp/}仙人望月 {lamp/}景山富览亭 {lamp/}从景山远望中央广播电视总台大楼和中信大厦 {lamp/}华表与国徽 {lamp/}
2024年11月21日
37 阅读
0 评论
2 点赞
2024-11-20
基于 openEuler 22.03 LTS SP4 编译 docker 20.10.13
1 编译目标由于 openEuler 所有版本适配的 docker 版本为 18.09,版本比较低不能满足大部分使用场景。因此本文以基于openEuler 22.03 LTS SP4 操作系统编译 docker-ce-20.10.13 为例,演示在 openEuler 操作系统上编译高版本 docker 的操作流程2 环境准备2.1 网络环境由于编译 docker 所需的源代码资源都在外网,因此需要提前配置代理# 配置代理 PROXY_IP=192.168.230.1 PROXY_PORT=1080 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=socks://${PROXY_IP}:${PROXY_PORT} # 测试代理 $ curl www.google.com2.2 编译工具安装必要的编译工具$ yum install -y rpm-build rpmdevtools gcc gcc-c++ make golang2.3 编译资源软件包名下载地址docker-ce-20.10.10-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpmdocker-ce-cli-20.10.13-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-cli-20.10.13-3.el8.src.rpmdocker-ce-rootless-extras-20.10.13-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-rootless-extras-20.10.13-3.el8.src.rpmcontainerd.io-1.4.3-3.2.src.rpmhttps://repo.openeuler.openatom.cn/openEuler-preview/sw_arch/openEuler-22.03-LTS/sources/Packages/containerd.io-1.4.3-3.2.src.rpmdocker-scan-plugin-0.12.0-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-scan-plugin-0.12.0-3.el8.src.rpm3 编译流程3.1 编译 docker-ce3.1.1 编译# 定义 GOPATH 路径 $ export GOPATH=/go # 设置不使用 Go Modules 功能 $ export GO111MODULE=off # 从 docker 官方仓库下载 docker-ce-20.10.10-3.el8.src.rpm 源码包 $ wget https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpm -P /root -2024-11-09 12:39:03-- https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpm Connecting to 192.168.230.1:1080... connected. Proxy request sent, awaiting response... 200 OK Length: 11328477 (11M) [binary/octet-stream] Saving to: ‘/root/docker-ce-20.10.10-3.el8.src.rpm’ docker-ce-20.10.10-3.el8. 100%[==================>] 10.80M 1.67MB/s in 7.5s 2024-11-09 12:39:12 (1.44 MB/s) - ‘/root/docker-ce-20.10.10-3.el8.src.rpm’ saved [11328477/11328477] # 安装 docker-ce-20.10.10-3.el8.src.rpm源码包 $ rpm -ivh /root/docker-ce-20.10.10-3.el8.src.rpm warning: /root/docker-ce-20.10.10-3.el8.src.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Updating / installing... 1:docker-ce-3:20.10.10-3.el8 ################################# [100%] # 进入 spec 文件目录 $ cd /root/rpmbuild/SPECS # 修改 spec 文件 $ sed -i \ -e '1i %define _version 20.10.13' \ -e '1i %define _release 3' \ -e '1i %define _origversion %{_version}' \ -e '1i \ ' \ docker-ce.spec # 安装编译包依赖 $ yum builddep -y docker-ce.spec # 开始编译 $ rpmbuild -ba docker-ce.spec3.1.2 FAQ(1)no required module provides package github.com/docker/libnetwork/cmd/proxy: go.mod file not found in current directory or any parent directory; see 'go help modules' 报错信息:报错原因:参考文献:报错no required module provides package github.comxx的解决方案-CSDN博客Go Modules 是在 Go 1.11 版本中引入的。此时从 git 上下载的依赖库不再保存在 GOPATH 中,而是存到当前项目中,并使用 go.mod 文件跟踪依赖库和其版本。GO111MODULE 这个环境变量也是此时引入的,作为控制是否开启 Go Modules 的开关,Go Modules 和 GOPATH 是两个对立的依赖存储和搜索方式解决方案:从 Go 1.16 开始,默认行为是 GO111MODULE=on,这意味着如果您想继续使用旧 GOPATH 方式,则必须强制 Go 不使用 Go Modules 功能:$ export GO111MODULE=off(2)error: missing GOPATH; please see https://golang.org/doc/code.html#GOPATH alternatively, set AUTO_GOPATH=1 报错信息:报错原因:GOPATH 变量未定义$ echo $GOPATH 解决方案:指定 GOPATH 变量$ export GOPATH=/go3.2 编译 docker-ce-cli3.2.1 编译# 定义 GOPATH 路径 $ export GOPATH=/go # 添加 PATH 变量 $ export PATH=${PATH}:${GOPATH}/bin # 设置不使用 Go Modules 功能 $ export GO111MODULE=off # 从 docker 官方仓库下载 docker-ce-cli-20.10.13-3.el8.src.rpm 源码包 $ wget https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-cli-20.10.13-3.el8.src.rpm -P /root --2024-11-09 17:26:50-- https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-cli-20.10.13-3.el8.src.rpm Connecting to 192.168.230.1:1080... connected. Proxy request sent, awaiting response... 200 OK Length: 7688788 (7.3M) [binary/octet-stream] Saving to: ‘/root/docker-ce-cli-20.10.13-3.el8.src.rpm’ docker-ce-cli-20.10.13-3. 100%[==================>] 7.33M 1.64MB/s in 4.5s 2024-11-09 17:26:56 (1.64 MB/s) - ‘/root/docker-ce-cli-20.10.13-3.el8.src.rpm’ saved [7688788/7688788] # 安装 docker-ce-cli-20.10.13-3.el8.src.rpm 源码包 $ rpm -ivh /root/docker-ce-cli-20.10.13-3.el8.src.rpm warning: /root/docker-ce-cli-20.10.13-3.el8.src.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Updating / installing... 1:docker-ce-cli-1:20.10.13-3.el8 ################################# [100%] # 进入 spec 文件目录 $ cd /root/rpmbuild/SPECS # 修改 spec 文件 $ sed -i \ -e '1i %define _version 20.10.13' \ -e '1i %define _release 3' \ -e '1i %define _origversion %{_version}' \ -e '1i \ ' \ docker-ce-cli.spec # 安装编译包依赖 $ yum builddep -y docker-ce-cli.spec # 开始编译 $ rpmbuild -ba docker-ce-cli.spec3.2.2 FAQ(1)cannot find package "github.com/docker/cli/cmd/docker" in any of报错信息:报错原因:GOPATH 变量未定义$ echo $GOPATH 解决方案:指定 GOPATH 变量$ export GOPATH=/go(2)go: cannot find main module, but found vendor.conf in /go/src/github.com/docker/cli报错信息:报错原因:参考文献:报错no required module provides package github.comxx的解决方案-CSDN博客Go Modules 是在 Go 1.11 版本中引入的。此时从 git 上下载的依赖库不再保存在 GOPATH 中,而是存到当前项目中,并使用 go.mod 文件跟踪依赖库和其版本。GO111MODULE 这个环境变量也是此时引入的,作为控制是否开启 Go Modules 的开关,Go Modules 和 GOPATH 是两个对立的依赖存储和搜索方式解决方案:从 Go 1.16 开始,默认行为是 GO111MODULE=on,这意味着如果您想继续使用旧 GOPATH 方式,则必须强制 Go 不使用 Go Modules 功能:$ export GO111MODULE=off(3)./man/md2man-all.sh: line 21: go-md2man: command not found报错信息:报错原因:未找到 go-md2man 命令,实际此时该命令已经编译成功,位于 /go/bin 目录中$ ls -l /go/bin/ total 2604 -rwxr-xr-x 1 root root 2666053 Nov 9 17:39 go-md2man解决方案:将 /go/bin 添加 PATH 变量# 将 /go/bin 添加 PATH 变量 $ export PATH=${PATH}:${GOPATH}/bin # 查询是否能找到 go-md2man 命令 $ which go-md2man /go/bin/go-md2man3.3 编译 docker-ce-rootless-extras# 从 docker 官方仓库下载 docker-ce-rootless-extras-20.10.13-3.el8.src.rpm 源码包 $ wget https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm -P /root --2024-11-09 17:52:50-- https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm Connecting to 192.168.230.1:1080... connected. Proxy request sent, awaiting response... 200 OK Length: 11211542 (11M) [binary/octet-stream] Saving to: ‘/root/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm’ docker-ce-rootless-extras 100%[==================>] 10.69M 2.57MB/s in 4.2s 2024-11-09 17:52:55 (2.57 MB/s) - ‘/root/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm’ saved [11211542/11211542] # 安装 docker-ce-rootless-extras-20.10.13-3.el8.src.rpm 源码包 $ rpm -ivh /root/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm warning: /root/docker-ce-rootless-extras-20.10.13-3.el8.src.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Updating / installing... 1:docker-ce-rootless-extras-0:20.10################################# [100%] # 进入 spec 文件目录 $ cd /root/rpmbuild/SPECS # 修改 spec 文件 $ sed -i \ -e '1i %define _version 20.10.13' \ -e '1i %define _release 3' \ -e '1i \ ' \ docker-ce-rootless-extras.spec # 安装编译包依赖 $ yum builddep -y docker-ce-rootless-extras.spec # 开始编译 $ rpmbuild -ba docker-ce-rootless-extras.spec3.4 编译 containerd.io3.4.1 编译(1)环境准备# 定义 GOPATH 路径 $ export GOPATH=/root/go(2)部署 containerd 源码# 创建存放 containerd 的源码目录 $ mkdir -p $GOPATH/src/github.com/containerd # 进入存放 containerd 的源码目录 $ cd $GOPATH/src/github.com/containerd # 克隆 containerd 源码 $ git clone https://github.com/containerd/containerd.git Cloning into 'containerd'... remote: Enumerating objects: 148247, done. remote: Counting objects: 100% (19157/19157), done. remote: Compressing objects: 100% (1209/1209), done. remote: Total 148247 (delta 18390), reused 18188 (delta 17926), pack-reused 129090 (from 1) Receiving objects: 100% (148247/148247), 113.09 MiB | 2.27 MiB/s, done. Resolving deltas: 100% (96229/96229), done. # 进入克隆的 containerd 源码目录 $ cd $GOPATH/src/github.com/containerd/containerd # 切换分支,因为高版本分支需要较高的 go 版本支持 $ git checkout v1.5.18 # 确认分支是否正确 $ git branch * (HEAD detached at v1.5.18) main(3)部署 runc 源码# 创建存放 runc 的源码目录 $ mkdir -p $GOPATH/src/github.com/opencontainers # 进入存放 runc 的源码目录 $ cd $GOPATH/src/github.com/opencontainers # 克隆 runc 源码 $ git clone https://github.com/opencontainers/runc.git Cloning into 'runc'... remote: Enumerating objects: 44540, done. remote: Counting objects: 100% (194/194), done. remote: Compressing objects: 100% (138/138), done. remote: Total 44540 (delta 80), reused 126 (delta 49), pack-reused 44346 (from 1) Receiving objects: 100% (44540/44540), 22.01 MiB | 1.52 MiB/s, done. Resolving deltas: 100% (29266/29266), done. # 进入克隆的 runc 源码目录 $ cd $GOPATH/src/github.com/opencontainers/runc # 切换分支,因为高版本分支需要较高的 go 版本支持 $ git checkout v1.1.12 # 确认分支是否正确 $ git branch * (HEAD detached at v1.1.12) main(4)部署 go-md2man 工具命令# 安装 go-md2man 工具命令 $ go install github.com/cpuguy83/go-md2man/v2@latest # 查看命令是否安装成功 $ ls -l ${GOPATH}/bin total 2624 -rwxr-xr-x 1 root root 2685640 Nov 9 19:59 go-md2man # 将命令路径添加到 PATH $ export PATH=${PATH}:${GOPATH}/bin # 查询是否能找到 go-md2man 命令 $ which go-md2man /root/go/bin/go-md2man(5)编译 containerd.io# 从 OEPKGS 仓库下载 containerd.io-1.4.3-3.2.src.rpm 源码包 $ wget https://repo.openeuler.openatom.cn/openEuler-preview/sw_arch/openEuler-22.03-LTS/sources/Packages/containerd.io-1.4.3-3.2.src.rpm -P /root --2024-11-09 19:32:48-- https://repo.openeuler.openatom.cn/openEuler-preview/sw_arch/openEuler-22.03-LTS/sources/Packages/containerd.io-1.4.3-3.2.src.rpm Resolving repo.openeuler.openatom.cn (repo.openeuler.openatom.cn)... 124.70.105.51 Connecting to repo.openeuler.openatom.cn (repo.openeuler.openatom.cn)|124.70.105.51|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 15017 (15K) [application/x-redhat-package-manager] Saving to: ‘/root/containerd.io-1.4.3-3.2.src.rpm’ containerd.io-1.4.3-3.2.s 100%[==================>] 14.67K 45.6KB/s in 0.3s 2024-11-09 19:32:48 (45.6 KB/s) - ‘/root/containerd.io-1.4.3-3.2.src.rpm’ saved [15017/15017] # 安装 containerd.io-1.4.3-3.2.src.rpm 源码包 $ rpm -ivh /root/containerd.io-1.4.3-3.2.src.rpm Updating / installing... 1:containerd.io-1.4.3-3.2 ################################# [100%] # 进入 spec 文件目录 $ cd /root/rpmbuild/SPECS # 修改 spec 文件 $ sed -i '/^rm -rf %{_topdir}\/BUILD\// s/\/$//' containerd.spec # 定义 spec 文件中需要的环境变量 $ export RPM_VERSION=1.4.3 $ export RPM_RELEASE_VERSION=3.2 # 安装编译包依赖 $ yum builddep -y containerd.spec # 开始编译 $ rpmbuild -ba containerd.spec3.4.2 FAQ(1)RPM: error: line 46: Empty tag: Version报错信息:报错原因:containerd.spec 文件中第 46 行和第 47 行为定义 rpm 包的版本信息,其变量的值来自于环境变量 RPM_VERSION 和 RPM_RELEASE_VERSION,但是这两个环境变量未定义Version: %{getenv:RPM_VERSION} Release: %{getenv:RPM_RELEASE_VERSION}解决方案:在命令行中定义环境变量:RPM_VERSION 和 RPM_RELEASE_VERSION$ export RPM_VERSION=1.4.3 $ export RPM_RELEASE_VERSION=3.2(2)is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt报错信息:报错原因:go.mod 文件和 vendor/modules.txt 文件之间存在不一致解决方案:重新拉取源代码,确认go.mod 文件和 vendor/modules.txt 文件是否一致3.5 编译 docker-scan-plugin# 从 docker 官方仓库下载 docker-scan-plugin-0.12.0-3.el8.src.rpm 源码包 $ wget https://download.docker.com/linux/centos/8/source/stable/Packages/docker-scan-plugin-0.12.0-3.el8.src.rpm -P /root --2024-11-09 20:38:29-- https://download.docker.com/linux/centos/8/source/stable/Packages/docker-scan-plugin-0.12.0-3.el8.src.rpm Connecting to 192.168.230.1:1080... connected. Proxy request sent, awaiting response... 200 OK Length: 104035 (102K) [binary/octet-stream] Saving to: ‘/root/docker-scan-plugin-0.12.0-3.el8.src.rpm’ docker-scan-plugin-0.12.0 100%[==================>] 101.60K 278KB/s in 0.4s 2024-11-09 20:38:33 (278 KB/s) - ‘/root/docker-scan-plugin-0.12.0-3.el8.src.rpm’ saved [104035/104035] # 安装 docker-scan-plugin-0.12.0-3.el8.src.rpm 源码包 $ rpm -ivh /root/docker-scan-plugin-0.12.0-3.el8.src.rpm warning: /root/docker-scan-plugin-0.12.0-3.el8.src.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Updating / installing... 1:docker-scan-plugin-0:0.12.0-3.el8################################# [100%] # 进入 spec 文件目录 $ cd /root/rpmbuild/SPECS # 修改 spec 文件 $ sed -i \ -e '1i %define _scan_rpm_version 0.12.0' \ -e '1i %define _release 3' \ -e '1i %define _scan_version v%{_scan_rpm_version}' \ -e '1i \ ' \ docker-scan-plugin.spec # 安装编译包依赖 $ yum builddep -y docker-scan-plugin.spec # 开始编译 $ rpmbuild -ba docker-scan-plugin.spec4 安装测试(1)安装# 进入存放构建完成的 rpm 包目录 $ cd /root/rpmbuild/RPMS/x86_64/ # 查看编译完成的 rpm 包 $ ls -l total 91636 -rw-r--r-- 1 root root 31520637 Nov 9 20:32 containerd.io-1.4.3-3.2.x86_64.rpm -rw-r--r-- 1 root root 22738649 Nov 9 17:10 docker-ce-20.10.13-3.x86_64.rpm -rw-r--r-- 1 root root 30831385 Nov 9 17:46 docker-ce-cli-20.10.13-3.x86_64.rpm -rw-r--r-- 1 root root 4890517 Nov 9 19:20 docker-ce-rootless-extras-20.10.13-3.x86_64.rpm -rw-r--r-- 1 root root 3842797 Nov 9 20:44 docker-scan-plugin-0.12.0-3.x86_64.rpm # 执行本地安装 $ yum localinstall *.rpm(2)测试# 配置加速地址 $ cat >> /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://367e3d3a84aa407eb200df7aab688eaf.mirror.swr.myhuaweicloud.com" ] } EOF # 启动 docker 并设置开机自启 $ systemctl start docker && systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service. # 查看 docker 基本信息 $ docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.8.0-docker) scan: Docker Scan (Docker Inc., v0.12.0) Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.13 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: runc version: v1.1.12-0-g51d5e946 init version: de40ad0 Kernel Version: 5.10.0-216.0.0.115.oe2203sp4.x86_64 Operating System: openEuler 22.03 (LTS-SP4) OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 7.228GiB Name: localhost.localdomain ID: S6QG:FGLU:ZJC2:2N2Q:6SZS:HDTN:MDBY:CACI:DQ7Q:SX3B:XJ34:MFNO Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false # 拉取镜像 $ docker pull openeuler/openeuler:22.03-lts-sp4 22.03-lts-sp4: Pulling from openeuler/openeuler 6550e36f5825: Pull complete 12f045674288: Pull complete Digest: sha256:7b3947d10e1f9459ffae6303349f9f7dba79a1eb992adaa10172df6cbdac2b4e Status: Downloaded newer image for openeuler/openeuler:22.03-lts-sp4 docker.io/openeuler/openeuler:22.03-lts-sp4 # 创建容器 $ docker run -d --name test01 openeuler/openeuler:22.03-lts-sp4 /bin/bash -c "sleep 3600" cca749590ba66bdd6812bba5e83c17d5be217772933cb3c725aa831883c93b9a
2024年11月20日
79 阅读
0 评论
0 点赞
2024-08-17
openEuler 常用磁盘管理命令汇总
暂无简介
2024年08月17日
26 阅读
0 评论
0 点赞
1
2
3