当前位置: 首页 > news >正文

docker和docker compose离线安装-2-报错

[root@harbor ragflow-0.21.0]# docker compose -f docker/docker-compose.yml up -d
[+] Running 1/4
⠹ Container ragflow-mysql Starting 18.6s
⠋ Container ragflow-redis Starting 18.6s
⠏ Container ragflow-minio Starting 18.6s
✔ Container ragflow-server Recreated 14.4s
Error response from daemon: driver failed programming external connectivity on endpoint ragflow-mysql (9037cd04523fdc38ac284a22fbe80c6c5dc0485e7b09029a81bc7ddf6b3670d0): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5455 -j DNAT --to-destination 172.27.0.2:3306 ! -i br-3276c2281c8d: iptables: No chain/target/match by that name.
(exit status 1))

问题分析与解决方案

您遇到的错误是由于防火墙被关闭导致 Docker 的 iptables 规则被清除,从而无法正常启动容器。这个错误信息非常明确:

Error response from daemon: driver failed programming external connectivity on endpoint ragflow-mysql (...): (iptables failed: ... iptables: No chain/target/match by that name.

根本原因

正如知识库 [4] 所解释的:

“docker 服务启动时定义的自定义链 docker 由于 防火墙 被清掉。防火墙 的底层是使用 iptables 进行数据过滤,建立在iptables之上,这可能会与 docker产生冲突。当 防火墙 启动或者关闭的时候,将会从 iptables 中移除 docker 的规则,从而影响了 docker的正常工作。”

您之前执行了 systemctl stop firewalld,这导致 Docker 的 iptables 规则被清除,而 Docker 服务没有重新生成这些规则。

解决方案

按照知识库 [4] 的建议,只需重启 Docker 服务:

sudo systemctl restart docker

然后重新启动您的容器:

docker compose -f docker/docker-compose.yml up -d

为什么这个方法有效

重启 Docker 服务会:

  1. 重新创建 Docker 依赖的 iptables 规则
  2. 重新生成必要的 DOCKER 链
  3. 使 Docker 能够正确配置端口转发

预防措施

为避免类似问题再次发生:

  1. 不要在 Docker 运行后关闭防火墙,或者
  2. 如果必须关闭防火墙,请在关闭后重启 Docker 服务
  3. 或者使用更安全的方法:仅开放必要的端口,而不是完全关闭防火墙

验证防火墙状态

在执行重启 Docker 服务后,您可以确认防火墙状态:

systemctl status firewalld

如果防火墙已关闭,您应该看到:

Active: inactive (dead)

但 Docker 服务已经重新配置了必要的 iptables 规则,所以容器可以正常启动。

补充建议

如果您需要在 Docker 服务运行时使用防火墙,建议使用以下方法开放特定端口,而不是完全关闭防火墙:

# 开放 MySQL 端口 5455 (根据您的错误信息)
sudo firewall-cmd --permanent --add-port=5455/tcp
sudo firewall-cmd --reload

这样既保持了系统安全,又允许 Docker 正常工作。

ptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5455 -j DNAT --to-destination 172.27.0.2:3306 ! -i br-3276c2281c8d: iptables: No chain/target/match by that name.
(exit status 1))
[root@harbor ragflow-0.21.0]# sudo systemctl restart docker
[root@harbor ragflow-0.21.0]# docker compose -f docker/docker-compose.yml up -d
[+] Running 3/4
✔ Container ragflow-minio Started 0.9s
✔ Container ragflow-redis Started 0.8s
✔ Container ragflow-mysql Healthy 11.4s
⠏ Container ragflow-server Starting 0.9s
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: “./entrypoint.sh”: permission denied: unknown
[root@harbor ragflow-0.21.0]#

问题分析与解决方案

您现在遇到的错误是典型的 Docker 权限问题:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./entrypoint.sh": permission denied: unknown

根本原因

根据知识库 [2] 和 [5] 的信息,这个错误是由于 entrypoint.sh 文件没有执行权限导致的:

“错误关键在于:exec: ‘./entrypoint.sh’: permission denied
这说明容器内执行脚本 entrypoint.sh 时,操作系统检测到该文件没有执行权限。虽然该文件在本地存在并成功挂载到容器内,但如果本地文件本身就没有可执行权限,容器会原样继承此权限状态,从而导致运行失败。”

Docker 并不会自动为挂载进容器的文件赋予执行权限

解决方案

步骤 1:为 entrypoint.sh 添加执行权限

chmod +x ./entrypoint.sh

步骤 2:重新启动容器

docker compose down
docker compose up -d

为什么这个方法有效

  1. chmod +x ./entrypoint.sh 为本地脚本添加了执行权限(u+x)
  2. Docker 在启动容器时会将这个权限状态传递给容器
  3. 重新启动容器确保新权限生效

预防措施

  1. 在使用 Docker 之前确保所有脚本有执行权限

    chmod +x *.sh
    
  2. 在 Dockerfile 中设置权限(如果使用 Dockerfile 构建镜像):

    RUN chmod +x /ragflow/entrypoint.sh
    
  3. 在 docker-compose.yml 中指定用户(如果问题持续):

    services:ragflow-server:image: ragflow-servervolumes:- ./entrypoint.sh:/ragflow/entrypoint.shuser: "1000:1000"  # 替换为您的 UID:GIDworking_dir: /ragflowentrypoint: ./entrypoint.sh
    

验证

执行后,您应该看到类似这样的输出:

[+] Running 4/4✔ Container ragflow-minio   Started✔ Container ragflow-redis   Started✔ Container ragflow-mysql   Healthy✔ Container ragflow-server  Started

这样,您的 RAGFlow 服务应该能正常启动了。

http://www.dtcms.com/a/513126.html

相关文章:

  • 烟台放心的一站式网站建设佛山网站建设凤软
  • 网站调用网页怎么做国外那些网站做展厅比较好
  • 第2部分-线程的创建与管理
  • ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞
  • 建电子商务网站需要多少钱攻略类型网站如何做产品营销
  • 曲阜官方建设局网站免费域名的选择方法
  • 网站主机是什么意思图片制作器在线制作
  • 03-Machine-2-dht.py K230外接数字温湿度传感器DHT11模块演示
  • 前端代码练习网站包工头接活网站app
  • 深圳知名网站设计公司排名苏州建设监理有限公司网站
  • 长沙做网站seo衡阳网站建设开发价格
  • 网站网页翻页设计展厅展览设计
  • chooseVideo传视频无法取到缩略图
  • 给网站如何做飘窗韩国服装网站建设
  • 高级技巧:利用淘宝 API 的字段映射与数据增强,丰富商品信息维度
  • PM2.5实验滤膜等分切割器90mm疾控中心可用
  • 【独龙江的守望】中国历朝历代历史信息整理
  • 企业网站快速优化排名韩国优秀电商网站
  • 源码下载网站推荐wordpress 制作小工具栏
  • 强网杯-2025-pwn-bph
  • 对前后端分离与前后端不分离(通常指服务端渲染)的架构进行全方位的对比分析
  • 大数据成矿预测系列(五) | 告别特征工程:卷积神经网络(CNN)如何实现“端到端”成矿预测
  • 国内响应式网站模板教学网站建设 效益
  • 华东建设安装有限公司网站wordpress手机编辑器插件下载
  • 请谈谈源码中StaticLayout的用法和应用场景?
  • 运营网站清风室内设计培训学校
  • UVa 10587 Mayor‘s Posters
  • 非洲用什么网站做采购开源低代码平台
  • 网站服务器空间不足最好的建站平台
  • LeetCode 3143.正方形中的最多点数