在宝塔面板的软件商店安装 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包
# 卸载旧版本(如果之前安装过的话)
yum remove docker docker-common docker-selinux docker-engine
# 安装需要的软件包
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-18.03.1.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文件来配置应用服务,然后只需一个简单的命令,就可以创建并启动所有服务。这对于开发环境的快速配置、测试和部署来说非常方便,特别是在涉及多个相互依赖容器的复杂应用中。
标签:bin,compose,CentOS7,usr,Docker,安装,docker From: https://www.cnblogs.com/thr-0103/p/18058197