Docker安装FastDFS

观书散遗帙,探古穷至妙。这篇文章主要讲述Docker安装FastDFS相关的知识,希望能为你提供帮助。
由于Host主机网络驱动程序仅适用于Linux主机,并且不支持Docker for Mac,所以提供在centos和mac的不同安装方法。
一、Centos
1.获取delron/fastdfs镜像

docker pull delron/fastdfs

2.run tracker
docker run --network=host --name tracker \\
-v /Users/melodykke/custom/docker/persistence/apps/fdfs/tracker:/var/fdfs \\
-v /etc/localtime:/etc/localtime \\
-itd delron/fastdfs tracker

3.run storage
docker run --network=host --name storage \\
-e TRACKER_SERVER=192.168.100.149:22122 \\
-v /Users/melodykke/custom/docker/persistence/apps/fdfs/storage:/var/fdfs\\
-v /etc/localtime:/etc/localtime \\
-itd delron/fastdfs storage

??centos环境中,tracker和storage使用docker host网络,共享宿主机网络Network Namespace,使用宿主机的IP和端口而并不会虚拟出自己的网卡设备和配置自己的IP等。
  • TRACKER_SERVER=192.168.100.149:22122,TRACKER_SERVER为tracker服务地址。
  • TRACKER_SERVER勿配置为127.0.0.1或localhost。
  • 配置TRACKER_SERVER的目的是让storage能找到tracker服务,不论是bridge还是host网络模式,都要使得TRACKER_SERVER配置的地址能找到tracker服务。
  • 这里通过host网络,可通过宿主机+22122端口映射到容器中的tracker服务。(下文Mac通过bridge网络变通下目的也是网络能通且能找到tracker server。
4.配置tracker server的storage.conf将tracker server中的/etc/fdfs/storage.conf文件中的tracker_server配置为能找到tracker server服务的地址:
# tracker_server can ocur more than once, and tracker_server format is
#"host:port", host can be hostname or ip address
tracker_server=192.168.100.149:22122

5.(选配)配置storage server的storage.conf文件中 http的访问端口
# the port of the web server on this storage server
http.server_port=8888

8888为默认端口
6.(选配)配置storage server的nginx server的服务监听端口
server {
listen8888;
server_namelocalhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page500 502 503 504/50x.html;
location = /50x.html {
root html;
}
}

  • delron/fastdfs  镜像包含了nginx服务。
  • storage 容器的 nginx代理了storage 的http服务,目的是方便web浏览器通过nginx服务访问到storage存储的资源。
  • 如果上面storage.conf的http.server_port端口更改过,这里nginx代理监听的服务端口要保持一致。
7.测试fastDFSfdfs_monitor在tracker或storage中通过  fdfs_monitor /etc/fdfs/storage.conf 检查配置是否正确。
[2021-10-11 14:23:54] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=1, server_index=0

tracker server is 192.168.100.149:22122

group count: 1

Group 1:
group name = group1
disk total space = 476802 MB

tracker server is 192.168.100.149:22122说明配置正确,同时也可以通过telnet看看服务是否都能找得到。
fdfs_upload_file在storage容器中使用fdfs_upload_file尝试上传指定文件,如果正确返回存储路径,则测试通过。
#进入到storage容器中
cd /var/fdfs
echo 11111> 1.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.txt

group1/M00/00/00/rBEABmFkSvCAKThKAAAATzab9Do079.txt为返回的文件存储路径。部署完成。


二、MacOS
macOS并不支持docker host网络,这里依然使用bridge。
为了将tracker容器中的storage.conf持久化在宿主机,这里调整了映射目录。
run tracker
docker run --name tracker -p 22122:22122 \\
-v /Users/melodykke/custom/docker/persistence/apps/fdfs/tracker/content:/var/fdfs \\
-v /Users/melodykke/custom/docker/persistence/apps/fdfs/tracker/config:/etc/fdfs \\
-v /etc/localtime:/etc/localtime \\
-itd delron/fastdfs tracker

默认network为bridge,并且指定端口映射-p 22122:22122。
  • 这里我事先启动了一个正常的tracker实例,把其容器中的/etc/fdfs目录中的所有配置拷贝到了宿主机,然后修改了storage.conf中的tracker_server=192.168.100.149:22122,这样就不用担心容器重启后又得进到tracker容器中重新修改该配置。
run storage
docker run --name storage-p 8888:8888 -p 23000:23000 \\
-e TRACKER_SERVER=192.168.100.149:22122 \\
-v /Users/melodykke/custom/docker/persistence/apps/fdfs/storage/content:/var/fdfs\\
-v /etc/localtime:/etc/localtime \\
-itd delron/fastdfs storage

默认network为bridge,并且指定nginx和storage的端口映射分别为-p 8888:8888 -p 23000:23000。
这里配置bridge端口映射的目的依然是让服务彼此能找到TRACKER_SERVER,保证TRACKER_SERVER能通。
其他内容和在Centos中配置一致。








【Docker安装FastDFS】










    推荐阅读