安装

  • 拉取镜像
docker pull delron/fastdfs
  • 创建本机存储目录
rm -fR /home/docker/fastdfs/{tracker,storage} mkdir /home/docker/fastdfs/{tracker,storage}  -p
  • 启动tracker
[root@VM_80_14_centos ~]# docker run -d > --network=host > --name tracker > -v /home/docker/fastdfs/tracker:/var/fdfs > delron/fastdfs trackerf75f668ca39bce2d54cc5d7195465a45bf782b29f06cde4d01b1f7d9b0474606

说明:启动后如果更改tracker的端口,需要进入 /etc/fdfs中找到tracker.conf,将默认的端口22122 替换我们想要的。这是因为我们安装在腾讯云服务器,只开放了少数端口

  • 启动storage
docker run -d --network=host --name storage -e TRACKER_SERVER=49.232.95.99:17006 -v /home/docker/fastdfs/storage:/var/fdfs  -v /etc/localtime:/etc/localtime delron/fastdfs storage

说明TRACKER_SERVER=IP:17006

IP:是本服务器的公网ip;

17006: 原本应该是22122,这块我们的tracker端口修改为了17006,所以这里指向了17006。

1、接下来进入容器中

目的:修改storage的端口,默认的对外访问端口是8888

,这里修改为17008,上传使用的默认端口23000,这里我们修改为17007

docker exec -it storage bashvi /etc/fdfs/storage.conf将port、和http.server.port修改为我们需要的。

然后修改nginx配置,将监听端口8888改为17008,退出容器,重启storage容器

vi /usr/local/nginx/conf/nginx.conf

2、通过命令查看tracker的端口监控情况

netstat -antp | grep trackerdtcp        0      0 0.0.0.0:17006           0.0.0.0:*               LISTEN      27838/fdfs_trackerd tcp        0      0 172.21.80.16:17006      49.232.95.99:58518      ESTABLISHED 27838/fdfs_trackerd 说明端口已经启动成功

3、查看storage的端口

[root@VM_80_14_centos /]# netstat -antp | grep storagedtcp        0      0 0.0.0.0:17007           0.0.0.0:*               LISTEN      30998/fdfs_storaged tcp        0      0 172.21.80.14:58518      49.232.95.99:17006      ESTABLISHED 30998/fdfs_storaged

说明上传端口23000已经替换为17007成功

开启宿主机防火墙端口,delron/fastdfs镜像在构建的时候为nginx配置的端口为17008

firewall-cmd --zone=public --add-port=17006/tcp --permanentfirewall-cmd --zone=public --add-port=17007/tcp --permanentfirewall-cmd --zone=public --add-port=17008/tcp --permanentfirewall-cmd --reload# 查看是否开放firewall-cmd --query-port=17006/tcpfirewall-cmd --query-port=17007/tcpfirewall-cmd --query-port=17008/tcp

测试安装结果

FastDFS安装包中,自带了客户端程序,可以使用这个命令行客户端进行文件上传及下载测试。

在宿主机执行命令

1、上传文件(是容器里面的文件,默认进入容器的目录是/tmp/nginx/nginx-1.12.2)

在该文件夹下创建一个随便的文件,如果出现以下内容就代表上传成功。

[root@VM_80_14_centos /]# docker exec -i storage /usr/bin/fdfs_upload_file /etc/fdfs/client.conf ysh.txtgroup1/M00/00/00/rBVQDl6IyrqAaqw1AAAAD0FZrvM510.txt

2、 通过页面访问 IP:17008/group1/M00/00/00/rBVQDl6IyrqAaqw1AAAAD0FZrvM510.txt

查看到内容可以展示,说明已经成功!




# FastDFS+FastDHT(单机+集群版) 使用docker-compose创建FastDFS+FastDHT(单机+集 docker搭建fastdfs_fastdfs搭建


注意事项

1、如果上传时报23000、22122端口,或者是我们自己替换的端口超时,或者拒绝连接的情况,最可能的原因是我们使用的是公有云的端口,没有在安全组配置打开,第二种情况可能是我们没有替换tracker.conf的端口22122,storage.conf的23000端口,如果是页面访问不成功就是nginx和storage.conf的端口没有替换。最重要的是要改完重启storage容器。如下就是我自己在安装的测试上传的时候报的错:

# 映射端口时没有改成我们需要的端口,[2020-04-05 01:45:51] ERROR - file: connection_pool.c, line: 130, connect to 49.232.95.99:23000 fail, errno: 110, error info: Connection timed out

或者

[2020-04-05 01:28:47] ERROR - file: connection_pool.c, line: 130, connect to 49.232.95.99:22122 fail, errno: 110, error info: Connection timed out

或者

[2020-04-05 01:20:19] ERROR - file: connection_pool.c, line: 130, connect to 49.232.95.99:17009 fail, errno: 111, error info: Connection refused

如果还是看不出来,可以去我们配置的挂载目录下查看日志