说明:本次pull已经整合了fastdfs与nginx的镜像,偷个懒。下面不说原理啦,直接简单粗暴执行命令进行安装。
1.下载镜像:
docker pull delron/fastdfs
注:安装fastdfs需要构建tracker容器与storage容器
2.创建桥接网络
说明:mac环境下docker不能使用host网络(非mac可以使用host,仅供测试环境时哈),不然-p命令不能使用,导致不能绑定ip和端口,如下图
创建桥接网络:
docker network create my-net
注:默认是创建的bridge网络,无需指定
3.构建tracker容器(跟踪服务器,起到调度的作用)
docker run -d -p 22122:22122 --name tracker --net=my-net -v /Users/xxx/Desktop/开发/soft/fastdfs/tracker:/var/fdfs delron/fastdfs tracker
注意:tracker挂载的路径
4.构建storage容器(存储服务器,提供容量和备份服务)
docker run -d -p 8888:8888 -p 23000:23000 --name storage --net=my-net -e TRACKER_SERVER=192.168.1.8:22122 -v /Users/xxx/Desktop/开发/soft/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
注意:storage挂载的路径,及TRACKER_SERVER的ip,此处的192.168.1.8是我本机的ip,大家安装时可通过ifconfig命令来查看自己的ip。
5.检验是否安装成功
注:此处省略代码与fastdfs的整合。
主要讲解此处的大坑:com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:can't create connection to/172.19.0.1:23000 问题 ,是因为storage容器注册在tracker容器中用的是容器网段ip,所以返回给Java服务器端的ip也是该ip,导致无法访问到172.19.0.1(我本机docker下tracker分配的内网地址,可使用docker exec -it tracker /bin/bash ,使用ifconfig命令查看)。
解决方法:给lo0
设置别名即可
sudo ifconfig lo0 alias 172.19.0.1
sudo ifconfig lo0 alias 10.0.75.2
设置完毕后在客户端访问172.19.0.1:23000时,会转向访问本机的127.0.0.1:23000
需要注意的是这样设置了后,以后所有的172.19.0.1地址都会转向127.0.0.1
还原命令:
sudo ifconfig lo0 -alias 10.0.75.2
sudo ifconfig lo0 -alias 172.19.0.1
参考地址: https://www.cnblogs.com/bjlhx/p/12239588.html