CentOS7 解决宝塔面板安装 Docker 和 Docker-compose 的问题
1.关于 Xshell 连不上远程 CentOS7 云服务器的问题2.Ubuntu22.04 图形化安装 Eclipse3.CentOS7 云服务器上安装 Libmicrohttpd 库4.Ubuntu22.04 安装 MQTT 服务器5.Ubuntu22.04 上使用 C 语言实现简易聊天室程序
6.CentOS7 解决宝塔面板安装 Docker 和 Docker-compose 的问题
在宝塔面板的软件商店安装 Docker 管理器时提示需手动安装 Docker,再在面板中开启 Docker 插件进行可视化管理
但是我手动安装 Docker 后依旧提示当前未安装 Docker 或 Docker-compose,即宝塔面板的 Docker 管理插件仍无法识别到这些安装,在此记录下我的解决过程,如有错误,欢迎指正!
1. 问题描述
1.1 报错信息
1.2 原因分析
参考这篇文章,我找到了宝塔面板检测Docker安装状态的内部逻辑:https://blog.csdn.net/u014126725/article/details/133946944
- 找到检测逻辑的代码:在宝塔面板的侧边栏点击
文件
选项卡,进入/www/server/panel/class/projectModel/bt_docker
目录下,双击查看dk_setup.py
文件,找到函数check_docker_program
- 分析代码:
- 定义 docker 和 docker-compose 的检查路径:
"/usr/bin/docker"
和"/usr/bin/docker-compose"
- 检查 docker-compose 的备选路径:如果在
/usr/bin/docker-compose
路径下找不到docker-compose
,代码将在两个备选路径"/usr/libexec/docker/cli-plugins/docker-compose"
和"/usr/local/docker-compose"
中搜索docker-compose
。 - 为找到的 docker-compose 创建符号链接:如果在备选路径中找到了
docker-compose
,使用命令为它创建一个符号链接到/usr/bin/docker-compose
。这一步骤确保即使docker-compose
安装在不同的路径,也能被系统识别为在/usr/bin/docker-compose
。 - 最终的检查逻辑:检查
/usr/bin/docker
和/usr/bin/docker-compose
是否都存在。如果任一文件不存在,函数返回False
,表明docker
或docker-compose
未完全安装。只有当两者都存在时,才返回True
。
- 定义 docker 和 docker-compose 的检查路径:
def check_docker_program(self): """ 检查docker和docker-compose是否已经安装 :return: """ # 定义docker和docker-compose的检查路径 docker = "/usr/bin/docker" docker_compose = "/usr/bin/docker-compose" if not os.path.exists(docker_compose): dk_compose_list = ["/usr/libexec/docker/cli-plugins/docker-compose", "/usr/local/docker-compose"] for i in dk_compose_list: if os.path.exists(i): public.ExecShell("ln -sf {} {}".format(i, docker_compose)) if not os.path.exists(docker) or not os.path.exists(docker_compose): return False return True
- 需要符合的条件:为了使这段代码返回
True
,即判断docker
和docker-compose
都已安装,我们需要保证/usr/bin/docker
存在,表示docker
已安装/usr/bin/docker-compose
存在,无论是直接安装在这个路径,还是通过在备选路径找到后创建的符号链接
2. 解决步骤
2.1 安装 Docker
以下操作均在 root 权限下进行,参考:https://cloud.tencent.com/developer/article/1701451
# 确认是否已安装 docker docker --version yum -y update # 更新yum包 # 确认已安装的 Docker 相关包 yum list installed | grep docker yum remove docker-ce docker-ce-cli containerd.io # 卸载旧版本(如果之前安装过的话) # 安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置 yum 源 yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo # 中央仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里仓库 # 选择docker版本并安装 yum list docker-ce --showduplicates | sort -r # 查看可用版本 yum -y install docker-ce # 安装 # 启动 Docker 并设置开机自启 systemctl start docker systemctl enable docker
2.2 安装 Docker-compose 并创建符号链接
-
安装 docker-compose:
- 直接 curl 速度太慢了:
curl -L https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
- 我这里直接在官网上选择版本下载
docker-compose-Linux-x86_64
到本地:https://github.com/docker/compose/releases
- 然后在本地更名为 docker-compose,并上传到云服务器的
/usr/local/bin
目录下后,添加执行权限
chmod +x /usr/local/bin/docker-compose - 直接 curl 速度太慢了:
-
链接到 /usr/bin/目录下:
ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
- 验证:
docker-compose -v # 查看版本 ls -l /usr/bin/docker-compose # 查看链接是否成功
2.3 宝塔面板菜单栏显示 Docker
- 在宝塔面板的侧边栏点击
面板设置
, 找到面板菜单栏隐藏
的设置,将Docker
打开
- 成功:
3. 总结
- Docker
docker 是容器,可以将项目的环境(比如 java、nginx)和项目的代码一起打包成镜像,所有人都能下载镜像,更容易分发和移植。再启动项目时,不需要敲一大堆命令,而是直接下载镜像、启动镜像就可以了。docker 可以理解为软件安装包。
- Docker Compose
Docker Compose 简化了Docker容器的管理过程,通过Compose,用户可以使用YAML文件来配置应用服务,然后只需一个简单的命令,就可以创建并启动所有服务。这对于开发环境的快速配置、测试和部署来说非常方便,特别是在涉及多个相互依赖容器的复杂应用中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端