一、安装

在dockerhub上搜索fastdfs ,找到mypjb/fastdfs

拉取镜像
docker pull mypjb/fastdfs
创建docker容器
docker run --add-host fastdfs.net:192.168.29.117 --name fastdfs --net=host -e TRACKER_ENABLE=1 -e NGINX_PORT=81 -v /root/fastdfs/data:/storage/fastdfs --privileged=true -it mypjb/fastdfs
退出容器
exit
将容器内的/usr/local/fastdfs/conf 拷贝到/root/fastdfs/conf
docker cp a096f7850ac3:/usr/local/fastdfs/conf /root/fastdfs/conf

修改storage.conf中的tracker_server的ip地址
重新创建容器

docker run --add-host fastdfs.net:193.112.204.55 --name fastdfs --net=host -e TRACKER_ENABLE=1 -e NGINX_PORT=81 -v /root/fastdfs/data:/storage/fastdfs -v /root/fastdfs/conf:/usr/local/fastdfs/conf --privileged=true -it mypjb/fastdfs

重启容器
docker restart fastdfs
查看端口 
netstat -nlp

81为nginx服务端口,访问文件
12050为tracker端口,可以调用上传文件服务
其他配置可更改配置文件 (/usr/local/fastdfs/conf/目录下),如访问密码、心跳时长等

进入容器:

docker run -it mypjb/fastdfs /bin/bash

二、测试

修改client.conf配置文件
修改storage路径 tracker host地址
image.png

下载一张图片
 wget http://www.yuwb.pub/usr/themes/default/affinity.png
使用fastdfs测试模块上传图片
fdfs_test /usr/local/fastdfs/conf/client.conf upload affinity.png

image.png
打开浏览器访问:
http://192.168.29.117:81/M00/00/00/wKgddV2QSuaACsZwAAAw1jAOulY103_big.png
测试完成

三、配置描述

文件系统host,可配置域名、IP地址
--add-host fastdfs.net:192.168.29.117
容器网络为host模式,容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
--net=host
host模式:容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

container模式:配置和其他容器公用网络

none模式:Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等

bridge模式:是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。下面着重介绍一下此模式。

-e TRACKER_ENABLE=1 启用tracker(协调器)
Tracker
是什么? 调度服务器
作用?负载均衡和调度,管理所有的卷[volume]包括其中的storage server

1、每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。
2、Tracker的集群中所有的tracker是平等的,客户端请求tracker server采用轮询的方法,如果请求的tracker不能提供服务就换另一个tracker。

-e NGINX_PORT=81 修改fastdfs中nginx模块的端口
-v /root/fastdfs/data:/storage/fastdfs
将容器中的/storage/fastdfs目录持久化到宿主机器 /root/fastdfs/data
--privileged=true
大约在0.6版,privileged被引入docker。使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。由于创建目录权限受限,加上此参数