Windows环境下利用docker安装FastFDS

Windows环境利用docker安装FastFDS主要会遇到以下几个坑,注意绕行:

1.最主要的问题是在windows环境下docker网络设置与linux不同导致的容器间通信设置复杂问题;
2.存储空间不足问题fdfs_client.exceptions.DataError: [-] Error: 28, No space left on device;
3.storage docker再次启动时,报错tail: cannot open ‘/var/fdfs/logs/storaged.log’ for reading: No such file or directory;

其中第一个问题最为致命,该问题包含两个子问题。1.容器启动运行时的通信问题;2.上传数据时的通信问题。
网上的资料不多,目前找到的方案也只是一套应急方案,不够自动化、移植性弱。

安装流程及避坑说明

0.前序工作

我们在正式操作之前需要安装好docker,并进行FastFDS镜像拉取

docker image pull delron/fastdfs

为了能够时docker容器间能够进行通信,需创建虚拟网络。之所以需要依靠虚拟网络通信是因为–network=host 这个配置只能在Linux系统有效,在Windows环境下目前了解到的还是得靠虚拟网络。

docker network create test-net

1.运行FastFDS容器

如果不设置虚拟网络,应该是报这个错

storage_ip_changed_dealer.c, line: 186, connect to tracker server 192.168.52.129:22122 fail, errno: 111, error info: Connection refused

开启tracker容器

docker run -dit --name tracker -h tracker --network=test-net -p 22122:22122 -v “your dirs”:/var/fdfs delron/fastdfs tracker

-network指定容器的运行网络环境
docker network create basenetwork;创建fastdfs使用的bridge网络
docker network inspect default_network; 查看一创建的网络信息
docker network ls; 列出已创建的网络
docker network rm default_network; 删除已创建的网络
-name 容器的名称
-h 容器的主机名。可以方便同一network下的容器之间进行通信,不必使用IP
-p 映射宿主机到容器(暴露端口)
-v 映射宿主机文件到容器
————————————————
版权声明:本文为CSDN博主「Illusion_Oops」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_39637094/article/details/119067249

开启storage容器

docker run -dti --name storage -h storage --network=test-net -p 8888:8888 -p 23000:23000 -e TRACKER_SERVER=tracker:22122 -v “your dirs”:/var/fdfs delron/fastdfs storage

2.Python框架上传图片至FastFDS

前序工作是安装好fdfs_client库,设置好client.conf的IP地址,这里是本机IP地址

tracker_server=192.168.xx.xx:22122

此刻如果不出意外,就是要出意外了

Error: 10060 connect to b’172.18.0.2’:22122

我们查看docker虚拟网络信息时可以看到,这个172.18.0.2的IP地址是虚拟网络的地址,与我们的本机IP不同

docker network inspect test-net

问题原因是

storeip配置成内网地址了,访问fastdfs先访问tracker服务器,会返回storeip地址,返回的这个地址是一个192.168这样一个内网地址,无法从我本地传到服务器
————————————————
版权声明:本文为CSDN博主「敲代码敲到头发茂密」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YZL40514131/article/details/124516386

解决方案目前只找到这一个比较笨的方法。

在tracker_client.py文件中找到tracker_query_storage_stor_without_group方法,其中有获取设置IP地址的地方:
在这里插入图片描述
然后手动改了store_serv.ip_addr的值,目前用这种方式暂时实现了特定storeip的功能,如果大家谁了解更好的设置这个值的方法,欢迎指正,记录一下这个问题,希望能帮到遇到这个问题的人。
———————————————— 版权声明:本文为CSDN博主「二月十六」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_28984567/article/details/109468602

如果你引用的是 .egg 的库,那么你会发现你无法修改 tracker_client.py ,这时你需要解压 .egg 包后再修改,并重新引用。解压时需要手动选择解压工具。

进行完上述步骤,如果幸运的话你就能够使用FastFDS了,如果不幸的话,可能会遇到以下问题。

3.其他问题

内存空间不足

fdfs_client.exceptions.DataError: [-] Error: 28, No space left on device;

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「敲代码敲到头发茂密」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YZL40514131/article/details/124516386

再次启动报缺少文件的错

storage docker再次启动时,报错tail: cannot open ‘/var/fdfs/logs/storaged.log’ for reading: No such file or directory;

删除文件存储路径下的fdfs_storaged.pid,再次启动正常。但是注意,每次重新启动时都需要再次删除这个文件,很不自动化。网上也有其他的方法,例如在镜像里生成这个文件,但是由于个人docker技术差,未尝试成功。
在这里插入图片描述

参考文章:

1.Windows(和macos)下Java客户端使用docker安装的fastdfs服务: https://blog.csdn.net/qq_39637094/article/details/119067249
2.storage docker再次启动时,报错tail: cannot open ‘/var/fdfs/logs/storaged.log‘ for reading: No such file or dhttps://blog.csdn.net/Dolphin_bobo/article/details/129294534?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-129294534-blog-129485447.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-129294534-blog-129485447.235%5Ev38%5Epc_relevant_sort_base2&utm_relevant_index=3
3.Python(py3fdfs)上传到fastdfs配置store_serv.ip_addr问题https://blog.csdn.net/sinat_28984567/article/details/109468602

说点其他的

这是我第一次写这种文章,也不知道是不是最后一次,希望不是吧。
写它的动机有三个:
1.自己遇到问题时,多亏了网上这些乐于分享的网友,才能够找到解决方案,如果没有他们的这些分享的成果,可能我早就在面对众多问题时被劝退了。所以我想我也应该把自己走过的这些弯路分享出来,帮助更多的人。前人栽树后人乘凉,希望我们每个人既是“后人”也成为“前人”。
2.这个问题耗费了我很长时间,数次让我濒临放弃,是一次次的再试一次的想法才让我最终解决了这个问题,我觉得这是一个有价值的内容,值得被分享出来。
3.自己刚刚走在技术的路上,希望能够积累一些的博客、文章、代码仓库等成果,对日后的工作起到一点帮助。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值