openEuler 22.03 LTS (aarch64)系统上离线安装 Docker 27.5(或指定版本)和 Docker Compose

系统自带docker 18.09,版本太低部署不了dify,只能离线安装,自己存档一下
以下是在Linux系统上离线安装Docker 27.5.0(通过 docker-27.5.0.tgz 压缩包)的详细步骤:


一、准备工作(离线安装包获取)

1. 在联网环境中下载安装包

如果 docker-27.5.0.tgz 未提前准备好,需在联网环境中下载:

# 下载官方二进制包(需确认版本存在性)
wget https://download.docker.com/linux/static/stable/aarch64/docker-27.5.0.tgz

# 若无法访问官方源,可通过其他途径获取离线包(如企业内部镜像)
2. 传输离线包到目标机器

docker-27.5.0.tgz 通过U盘、内网共享或SFTP传输到目标机器的 /opt/docker 目录:

mkdir -p /opt/docker
cp docker-27.5.0.tgz /opt/docker/

二、安装Docker二进制文件

1. 解压安装包
cd /opt/docker
tar -xzvf docker-27.5.0.tgz
2. 复制二进制文件到系统路径
# 将解压后的二进制文件复制到 /usr/bin/
sudo cp docker/* /usr/bin/

# 验证文件权限
sudo chmod +x /usr/bin/docker*
sudo chmod +x /usr/bin/containerd*
sudo chmod +x /usr/bin/runc

三、配置Docker服务

1. 创建systemd服务文件
# 创建Docker服务配置文件
sudo tee /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

针对 Failed to start docker.service: Unit containerd.service not found 错误,问题根源是 Docker 依赖的容器运行时 containerd 未正确安装或配置。以下是分步解决方案:


原因分析

  1. containerd 未安装
    Docker 依赖 containerd 作为容器运行时,离线安装时若未单独安装 containerd,会导致服务启动失败。
  2. containerd 服务文件缺失
    containerd 需通过 systemd 服务文件管理,若服务文件未配置,systemd 无法识别其服务。

解决方案

1. 安装 containerd

containerd 未随 Docker 二进制包一起安装,需手动部署:

# 进入 Docker 离线包解压目录(假设已解压到 /opt/docker)
cd /opt/docker/docker

# 检查是否包含 containerd 二进制文件
ls -l containerd*  # 应存在 containerd 和 containerd-shim

# 复制 containerd 二进制文件到系统路径
sudo cp containerd containerd-shim-runc-v2* /usr/bin/
sudo chmod +x /usr/bin/containerd*
2. 创建 containerd 服务文件

生成 systemd 服务配置文件:

sudo tee /etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
EOF
3. 启动 containerd 并重试
# 重载 systemd 配置
sudo systemctl daemon-reload

# 启动 containerd 并设置开机自启
sudo systemctl enable --now containerd

# 再次启动 Docker
sudo systemctl start docker

# 验证服务状态
sudo systemctl status containerd docker

验证安装

# 检查 Docker 版本
docker version

# 运行测试容器
sudo docker run hello-world

附:完整流程示例

若上述步骤仍报错,请按以下流程排查:

  1. 检查二进制文件权限
    sudo chmod +x /usr/bin/containerd /usr/bin/dockerd
    
  2. 查看日志定位问题
    journalctl -u containerd --no-pager  # 检查 containerd 日志
    journalctl -u docker --no-pager     # 检查 Docker 日志
    
  3. 调整 Docker 服务依赖(可选)
    修改 /etc/systemd/system/docker.service,移除对 containerd.service 的显式依赖(不推荐):
    # 将原配置中的 Requires=containerd.service 注释或删除
    # Requires=containerd.service
    

总结

此错误的核心是 containerd 运行时未正确安装或配置。通过手动部署二进制文件并创建 systemd 服务文件,即可修复依赖链,确保 Docker 正常启动。若使用官方 RPM 包安装,通常会自动处理依赖,但离线二进制安装需手动补全这些步骤。

2. 启动Docker服务
# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动Docker并设置开机自启
sudo systemctl enable --now docker

# 验证服务状态
sudo systemctl status docker

四、验证安装

1. 检查Docker版本
docker version
# 应输出 Docker 27.5.0 版本信息
2. 运行测试容器
sudo docker run hello-world
# 输出 "Hello from Docker!" 表示成功

五、安装Docker Compose(可选)

若需离线安装Docker Compose:

1. 下载二进制文件(联网环境)
wget https://github.com/docker/compose/releases/download/v2.27.5/docker-compose-linux-aarch64
mv docker-compose-linux-aarch64 docker-compose
chmod +x docker-compose
2. 部署到目标机器
sudo cp docker-compose /usr/local/bin/
docker-compose version

六、常见问题解决

1. 依赖缺失错误

若提示缺少依赖库(如 libcgroupcontainerd):

  • 手动安装依赖:在联网环境中下载对应RPM包(如 containerd-*.rpm)并复制到目标机器:
    sudo yum localinstall -y containerd-*.rpm
    
2. 权限问题
# 允许普通用户运行Docker
sudo usermod -aG docker $USER
newgrp docker  # 或重新登录
3. 服务启动失败
# 查看日志定位问题
sudo journalctl -u docker.service --no-pager
# 常见问题:containerd未安装或配置错误

附:安装包内容验证

确保 docker-27.5.0.tgz 解压后包含以下关键文件:

docker/
├── dockerd          # Docker守护进程
├── docker           # Docker客户端
├── containerd       # 容器运行时
├── containerd-shim  # 容器进程管理
└── runc             # 容器运行时工具

通过以上步骤,即可完成Docker 27.5.0的离线安装。

### 部署 Dify 到 Atlas 300I Duo 设备的指南 在 Atlas 300I Duo 设备上部署 Dify 平台涉及多个步骤,包括环境准备、模型下载与配置以及实际运行。以下是详细的说明: #### 环境准备 1. **硬件配置** 根据引用内容,推荐的硬件配置为鲲鹏 2 * 920 + 4 * Atlas 300I Duo (96G)系统openEuler 22.03 LTS[^3]。 2. **操作系统安装** 使用 openEuler 22.03 LTS (aarch64) 系统作为基础操作系统。确保系统已正确安装并更新至最新状态。 3. **Docker Docker Compose 安装** 在 openEuler 系统离线安装 Docker 27.5指定版本 Docker Compose。参考文章提供了详细的安装指南[^3]。 #### 模型下载与配置 1. **模型下载** 下载所需的模型文件到目标设备。根据引用内容,需要对每个模型内部的配置项进行修改[^4]。 2. **配置文件修改** 修改模型配置文件以适配 Atlas 300I Duo 设备。例如: ```bash [root@dify HwHiAiUser]# vim BAAI/bge-large-zh-v1___5/config.json [root@dify HwHiAiUser]# vim BAAI/bge-m3/config.json [root@dify HwHiAiUser]# vim BAAI/bge-reranker-large/config.json ``` 在这些配置文件中,设置 `"torch_dtype": "float16"` 以优化推理性能。 #### 部署 Dify 1. **运行脚本** 使用提供的 `docker_run.sh` 脚本启动 Dify 容器环境。确保所有依赖项已正确加载并运行。 2. **验证部署** 验证 Dify 平台是否成功部署并可以正常访问。可以通过浏览器访问平台界面使用 API 测试其功能。 #### 注意事项 - 确保 Atlas 300I Duo 的驱动程序已正确安装。例如,可以参考 `Ascend-hdk-910-npu-driver_23.0.0_linux-aarch64.run` 文件进行驱动安装。 - 如果使用的是 Atlas 800 9000 其他设备类型,则需调整相关配置以适配具体硬件环境[^4]。 ```python # 示例:检查 Docker 容器运行状态 import subprocess def check_docker_status(): try: result = subprocess.run(['docker', 'ps'], capture_output=True, text=True) print("Running Containers:") print(result.stdout) except Exception as e: print(f"Error: {e}") check_docker_status() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值