Bootstrap

Linux服务器RedHat安装Docker

配置本地镜像源

1.查看 iso 文件

df -h
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  16G     0   16G   0% /dev
tmpfs                     16G     0   16G   0% /dev/shm
tmpfs                     16G  8.6M   16G   1% /run
tmpfs                     16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root  468G  7.3G  461G   2% /
/dev/vda1                197M  193M  4.4M  98% /boot
tmpfs                    3.2G     0  3.2G   0% /run/user/0

df -h 输出来看,没有挂载的 ISO 文件。这表明你可能没有正确挂载 ISO 文件。

2 .输入sudo yum update(显示未注册)

[root@localhost ~]# sudo yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
There are no enabled repos.
 Run "yum repolist all" to see the repos you have.
 To enable Red Hat Subscription Management repositories:
     subscription-manager repos --enable <repo>
 To enable custom repositories:
     yum-config-manager --enable <repo>
[root@localhost ~]# uname-r
bash: uname-r: command not found

mkdir -p /mnt/iso

3. 下载ISO 文件

下载官方镜像源,并将 ISO 文件上传到服务器/mnt/iso上,并且路径正确。例如,假设 ISO 文件位于 `/mnt/iso/CentOS-7-x86_64-DVD-2009.iso。

4.挂载 ISO 文件

  1. 创建挂载目录
mkdir -p /mnt/iso
mkdir -p /mnt/cdrom
  1. 挂载 ISO 文件
mount -o loop /mnt/iso/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom
  1. 验证挂载是否成功
df -h

你应该能看到最后一行类似以下的输出:

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  16G     0   16G   0% /dev
tmpfs                     16G     0   16G   0% /dev/shm
tmpfs                     16G  8.6M   16G   1% /run
tmpfs                     16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root  468G  7.3G  461G   2% /
/dev/vda1                197M  193M  4.4M  98% /boot
tmpfs                    3.2G     0  3.2G   0% /run/user/0
/dev/loop0               4.4G  4.4G     0 100% /mnt/cdrom
[root@localhost yum.repos.d]# ls /mnt/cdrom
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

5.配置本地镜像源

  1. 进入 YUM 配置目录
cd /etc/yum.repos.d/
  1. 创建或编辑 .repo 文件: 创建一个新的 .repo 文件,例如 rhel-local.repo,并编辑该文件:
vi rhel-local.repo
  1. 添加本地镜像源配置: 在文件中添加以下内容:
[rhel-local-BaseOS]
name=Red Hat Enterprise Linux 7.0 BaseOS
baseurl=file:///mnt/cdrom/
enabled=0
gpgcheck=1

[rhel-local-AppStream]
name=Red Hat Enterprise Linux 7.0 AppStream
baseurl=file:///mnt/cdrom/
enabled=0
gpgcheck=1

保存并退出编辑器。

6.清除缓存并更新

  1. 清除 YUM 缓存
yum clean all
  1. 重建缓存
yum makecache
  1. 验证配置是否成功
yum repolist

如果看到列出的本地镜像源地址,则说明配置成功。

[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id               repo name                               status
rhel-local-AppStream  Red Hat Enterprise Linux 7.0 AppStream  4,070
rhel-local-BaseOS     Red Hat Enterprise Linux 7.0 BaseOS     4,070
repolist: 8,140

7.设置开机自动挂载(可选)

  1. 编辑 /etc/fstab 文件
vi /etc/fstab
  1. 添加自动挂载条目
    在文件末尾添加以下内容:
/mnt/iso/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom iso9660 defaults,ro,loop 0 0

保存并退出编辑器。

二、配置国内yum源

在使用 CentOS 7 的过程中,默认的 Yum 源有时会因为网络问题或速度限制导致软件包无法更新或者更新缓慢。为了提高软件包下载速度和稳定性,我们可以将默认的 Yum 源替换为国内的镜像源,例如阿里云的 Yum 源。本文将详细介绍如何在 CentOS 7 上更换为阿里云 Yum 源。

1. 进入 yum 源路径

cd /etc/yum.repos.d

2.备份默认 Yum 源

在进行任何更改之前,建议先备份默认的 Yum 源配置文件,以防需要恢复时使用。

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

3.下载阿里 yum 源

接下来,我们将下载阿里云的 Yum 源配置文件并放置在 /etc/yum.repos.d/ 目录下。

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

4. 修改阿里 yum 源配置文件

我配置了很多次,一直卡在 404 这个问题上,修改了 DNS 和镜像源依然不行,直到看到一个博主讲到$releasever 替换为 7,否则会报 404 not foiund

sed -i 's/$releasever/7/' CentOS-Base.repo

3.清理并更新 Yum 缓存

配置完成后,清理旧的 Yum 缓存并更新新的缓存。

yum clean all
yum makecache
yum -y update

4.验证 Yum 源是否更换成功

你可以通过运行以下命令来验证新的 Yum 源是否配置成功。

yum repolist

如果看到所有仓库的状态都是 enabled 并且能够正常列出仓库信息,则表示更换成功。

[!error] error: invalid version flag: if
问题描述

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
...
error: invalid version flag: if

解决方案
将CentOS-Base.repo 里面的 $releasever 替换为 7 固定版本

sed -i 's/$releasever/7/' CentOS-Base.repo

三、安装 Docker

1.安装依赖

# Ubuntu/Debian
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

# CentOS/Fedora
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.添加 Docker 官方 GPG 密钥

# Ubuntu/Debian
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# CentOS/Fedora
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.添加 Docker 软件源

# Ubuntu/Debian
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# CentOS/Fedora(已通过 yum-config-manager 自动添加,无需额外操作)

4.安装 Docker 引擎

确保你的服务器可以访问外部网络,尤其是 https://download.docker.com

ping download.docker.com

如果 ping 命令失败,可能是网络问题或 DNS 配置错误。

# Ubuntu/Debian
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# CentOS/Fedora
sudo yum install -y docker-ce docker-ce-cli containerd.io

5. 验证安装

输入以下命令查看 docker 的版本,确定是否成功安装

docker --version

三、配置 Docker

1.启动 Docker 服务

sudo systemctl start docker

2.设置开机自启

sudo systemctl enable docker

已创建启动链接,Docker 将在系统启动时自动启动。

3.检查服务状态

sudo systemctl status docker

输出显示 Docker 服务正在运行,状态为 active (running)。日志信息显示 Docker 守护进程已成功初始化,并且正在监听 /run/docker.sock。

4. 配置 Docker 镜像源

  1. 更改镜像配置
vi /etc/docker/daemon.json

I 输入下述镜像配置,按 ESC 退出写入,输入: wq 退出当前文件

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "40GB",
      "enabled": true
    }
  },
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "max-concurrent-downloads": 3,
  "max-download-attempts": 5,
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.imgdb.de",
    "https://docker.wanpeng.life",
    "https://docker.1panel.live",
    "https://hk11.606166.xyz",
    "https://docker.1panel.live",
    "https://hub.rat.dev"
  ],
  "shutdown-timeout": 1200
}
  1. 重启 docker 生效
systemctl restart docker
  1. 查看 docker 信息
docker info

5.验证安装

运行测试容器

sudo docker run hello-world

如果看到 Hello from Docker! 的欢迎信息,说明安装成功。

6.配置 Dify 和 RAGflow

可参考之前的文章Linux服务器部署Deepseek、Dify、RAGflow实战教程

切换到工作目录

cd /home/deepseek

Linux服务器部署Deepseek、Dify、RAGflow实战教程#安装 Dify
Linux服务器部署Deepseek、Dify、RAGflow实战教程#安装RagFlow

查看 IP

ifconfig

遇到Dify问题可参考Dify客户端异常
遇到RAGFlow问题可参考ragflow-mysql 启动失败案例分析

[!error] ragflow-mysql 启动失败
问题描述

dependency failed to start: container ragflow-mysql is unhealthy

查询日志

docker logs ragflow-mysql

显示

出现[root@localhost docker]# docker logs ragflow-mysql Fatal glibc error: 
CPU does not support x86-64-v2 Fatal glibc error: CPU does not support x86-64-v2

解决方案
参考[Question]: dependency failed to start: container ragflow-mysql is unhealthy · Issue #329 · infiniflow/ragflowFatal glibc error: CPU does not support x86-64-v2-CSDN博客

  1. 清理旧的 mysql 镜像
docker stop ragflow-mysql
docker rm ragflow-mysql
docker rmi mysql:8.0.39
  1. 降低mysql 版本
    修改docker-compose-base.yml 文件中的 mysql 配置部分,修改为 5.7 的版本,8.0 本人不可用,但是网上说可以使用,也可以尝试一下。
mysql:
    image: mysql:5.7 # 原本mysql8.0.39 ,mysql:5.7或 mysql:8.0
  1. 降低minio 版本
    此时我们还需要降低minio 的版本,不然后续在在 UI 的 System (系统) 页面上找到 RAGFlow 版本号中会出现下述情况,导致 minio 的端口映射不出来的问题。
httpconnectionpool(host='minio', port=9000): max retries exceeded with url: /txtxtxtxt1?location= (caused by nameresolutionerror("<urllib3.connection.httpconnection object at 0x7f88c9f62080>: failed to resolve 'minio' ([errno -2] name or service not known)

参考 Linux系统部署docker出现Fatal glibc error: CPU does not support x86-64-v2-CSDN博客
需要修改docker-compose-base.yml 文件中的 minio 配置部分,改为更低的版本

minio:
   image: quay.io/minio/minio:RELEASE.2023-04-28T18-11-17Z # minio:RELEASE.2023-12-20T01-00-02Z

[!bug] Dify客户端异常
问题描述
Dify将聊天应用程序嵌入 Web 时,第一次可以正常使用。刷新 Web 后,聊天程序报告错误:应用程序错误:发生客户端异常(有关详细信息,请参阅浏览器控制台)。

Application error: a client-side exception has occurred (see the browser console for more information.

解决方案
参考 fix: build failed due to getPrevChatList no longer exists by xuzuodong · Pull Request #13383 · langgenius/dify · GitHub
[[Linux服务器RedHat安装Docker#修改 web 镜像]]

四、附录

删除镜像

docker stop langgenius/dify-web
docker rm langgenius/dify-web
docker rmi langgenius/dify-web:0.15.3

删除所有镜像

1.停止并删除所有容器

运行以下命令来停止并删除所有正在运行的容器:

docker compose -p dify down
docker compose -p ragflow dowm

这个命令会停止并删除所有与 dify 项目相关的容器,同时保留镜像和卷。

如果你希望同时删除卷和网络,可以加上 -v--rmi 参数:

docker compose -p dify down -v --rmi local
docker compose -p ragflow down -v --rmi local
  • -v:删除与项目相关的卷。
  • --rmi local:删除 docker-compose 创建的本地镜像。
2.删除所有与 dify 相关的镜像

运行以下命令来删除所有与 dify 相关的镜像:

docker images | grep 'dify' | awk '{print $3}' | xargs -r docker rmi -f
docker images | grep 'ragflow' | awk '{print $3}' | xargs -r docker rmi -f

这个命令的含义如下:

  1. docker images:列出所有镜像。
  2. grep 'dify':筛选出包含 dify 的镜像。
  3. awk '{print $3}':提取镜像的ID。
  4. xargs -r docker rmi -f:强制删除这些镜像(-r 表示如果输入为空,不执行任何操作)。
3.验证镜像是否已删除

运行以下命令,确认所有与 dify 相关的镜像是否已被删除:

docker images

如果镜像列表中不再显示与 dify 相关的镜像,则说明删除成功。


4.(可选)清理未使用的镜像和资源

如果你还想清理所有未使用的镜像、容器和卷,可以运行以下命令:

docker system prune -a

这个命令会清理所有未使用的资源,包括:

  • 停止的容器
  • 未使用的镜像
  • 未使用的网络
  • 未使用的卷

注意:运行 docker system prune -a 会删除所有未使用的资源,请谨慎使用。

注意事项

  • 环境变量:如果修改了 .env 文件或相关配置,请确保在重新启动容器前同步更新。
  • 数据库迁移:如果修改涉及数据库结构,可能需要运行数据库迁移命令:
docker exec -it dify-api-1 flask db upgrade
  • 缓存问题:如果修改未生效,尝试清理浏览器缓存或重启 Docker 服务。

参考文章

redhat9.3配置国内yum阿里源和挂载本地镜像源_阿里yum源-CSDN博客
Index of /7.9.2009/isos/x86_64
CentOS 7 更换阿里云 Yum 源教程_centos7更换阿里yum源-CSDN博客
CentOS 7 - Yum无法安装的超全解决办法_yum安装失败-CSDN博客
教程 | 在 Linux 环境中安装 Docker(含2025最新镜像站加速,实测可用)_2025docker镜像加速地址最新-CSDN博客
linux配置docker源,国内加速镜像(注册阿里云镜像)_docker加速 清华源-CSDN博客
dependency failed to start: container ragflow-mysql is unhealthy · Issue #329 · infiniflow/ragflow
Fatal glibc error: CPU does not support x86-64-v2-CSDN博客
Docker安装MySQL8.0.39报错:Fatal glibc error: CPU does not support x86-64-v2 - 颜骏 - 博客园

;