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,表明dockerdocker-compose未完全安装。只有当两者都存在时,才返回True
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,即判断dockerdocker-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
  • 链接到 /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文件来配置应用服务,然后只需一个简单的命令,就可以创建并启动所有服务。这对于开发环境的快速配置、测试和部署来说非常方便,特别是在涉及多个相互依赖容器的复杂应用中。

posted @   路有所思  阅读(1501)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示