1、背景说明
1.1 问题描述
客户使用 ubuntu 24 版本操作系统,在进行AIchat安装时遇到如下问题导致无法正常安装,并且手动安装高版本docker也无法启动容器。
1)执行AIchat安装脚本报错异常如下:
2)手动安装docker后启动AIchat异常
1.2 环境信息
1.2.1 基础环境信息
序号 | 基础软件 | 版本信息 |
---|---|---|
1 | 操作系统及版本 | ubuntu 24 |
2 | CPU架构 | x86 |
2、AIchat安装脚本报错异常问题排查
2.1 使用 journalctl -xeu docker.service排查异常(看不出来问题)
2.2 使用dockerd启动查看异常
显示异常为“failed to start daemon: Devices cgroup isn't mounted”
查看当前操作系统cgroup版本
#mount -l |grep cgroup |
---|
2.3 总结
AIchat安装包默认带有的docker 版本为 19,需要使用 cgroup1,当前系统是 cgroup2所以docker导致无法启动。
解决方案有2个:
方案1:安装高版本的docker (**建议使用**)
方案2:修改Ubuntu 操作系统配置把 cgroup2 调整为 cgroup1 (**慎重使用**)
3、手动安装docker后启动AIchat异常
单独使用docker run 命令运行容器也会出现异常,应该客户现场在使用AIchat安装失败后又安装高版本docker,虽然AIchat安装失败,但是相关配置docker文件已经拷贝到系统中,2个版本的文件影响了高版本docker运行所导致的问题。
4、解决方案
4.1 安装高版本的docker
4.1.1 访问 Docker 官方下载页面
https://download.docker.com/linux/ubuntu/dists/
4.1.2 根据 Ubuntu 24 的代号 noble和系统架构(如 amd64
)选择以下docker安装包:
#Docker Compose #注:如果wget报Unable to establish SSL connection需要更新一下证书 #sudo apt-get update && sudo apt-get install ca-certificates |
---|
4.1.3 通过deb安装docker
把安装包上传到服务器一个文件夹中后执行以下命令进行docker的安装
#sudo dpkg -i *.deb |
---|
4.1.4 如果运行过AIchat的安装程序后再安装了高版本的docker
docker 再运行容器时就会以下异常:
需要先卸载高版本的docker并且清除对应的运行文件,然后按照4.2.3再重新安装即可,docker环境正常后再运行AIchat安装程序则可以正常启动。
#sudo apt-get purge docker-ce docker-ce-cli containerd.io |
---|
4.2 修改Ubuntu 操作系统配置把 cgroup2 调整为 cgroup1 (慎重!!)
注:调整操作系统参数是不建议的一种方式,如果是poc或者测试环境可以进行尝试,如果是生产环境建议慎重操作。
卸载高版本docker 使用AIchat自带的docker 19,需要把操作系统配置把 cgroup2 调整为 cgroup1。
4.2.1 修改grub文件
#vi /etc/default/grub |
---|
4.2.2 更新 GRUB
#update-grub |
---|
4.2.3 重启系统
#reboot |
---|
4.2.4 安装AIchat
此时可以正常使用Aichat安装脚本进行安装。
5、其他说明
5.1 停止docker服务
Ubunt系统直接使用systemctl stop docker 会有如下提示而导致无法停止
需要手动把docker.socket也停止,既需要执行如下2个停止命令:
#systemctl stop docker #systemctl stop docker.socket |
---|
5.2 docker-compose.yml文件
高版本的docker需要使用带网络配置的docker-compose文件,具体配置如下:
1、所有组件添加下方关键字
networks: |
---|
例如:aiweb
2、mongo和redis还需要配置aliases
2.1 mongo: networks: smartbinla_nla_default: aliases: - aimongo 2.2 redis: networks: smartbinla_nla_default: aliases: - airedis |
---|
例如:
3、配置文件结尾需要添加networks
networks: |
---|