docker search fastdfs
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/season/fastdfs FastDFS 39 docker.io docker.io/luhuiguo/fastdfs FastDFS is an open source high performance... 17 [OK] docker.io docker.io/morunchang/fastdfs A FastDFS image 9 docker.io docker.io/ygqygq2/fastdfs-nginx 整合了nginx的fastdfs 4 [OK] docker.io docker.io/lionheart/fastdfs-tracker just have a try on autobuilded -_-# 3 [OK] docker.io docker.io/imlzw/fastdfs-tracker fastdfs的tracker服务 2 [OK] docker.io docker.io/qbanxiaoli/fastdfs FastDFS单机版 2 [OK] docker.io docker.io/appcrash/fastdfs_nginx fastdfs with nginx 1 docker.io docker.io/delron/fastdfs 1 docker.io docker.io/evan1120/fastdfs_storage The fastdfs storage image 1 [OK] docker.io docker.io/evan1120/fastdfs_tracker The fastdfs tracker docker image, only con... 1 [OK] docker.io docker.io/imlzw/fastdfs-storage fastdfs的storage服务 1 [OK] docker.io docker.io/imlzw/fastdfs-storage-dht fastdfs的storage服务,并且集成了fastdht的服务,实现文件排重 1 [OK] docker.io docker.io/john123951/fastdfs_storage fastdfs storage 1 [OK] docker.io docker.io/lionheart/fastdfs-storage 更加规范的Dockerfile,能够自动构建了。 1 [OK] docker.io docker.io/lionheart/fastdfs_storage the fastdfs file system's storage node 1 docker.io docker.io/lionheart/fastdfs_tracker fastdfs file system‘s tracker node 1 docker.io docker.io/ecarpo/fastdfs-storage 0 docker.io docker.io/john123951/fastdfs_tracker fastdfs tracker 0 [OK] docker.io docker.io/manuku/fastdfs-fastdht fastdfs fastdht 0 [OK] docker.io docker.io/manuku/fastdfs-storage-dht fastdfs storage dht 0 [OK] docker.io docker.io/manuku/fastdfs-storage-proxy fastdfs storage proxy 0 [OK] docker.io docker.io/manuku/fastdfs-tracker fastdfs tracker 0 [OK] docker.io docker.io/mypjb/fastdfs this is a fastdfs docker project 0 [OK] docker.io docker.io/tsl0922/fastdfs FastDFS is an open source high performance... 0 [OK]
2.下载镜像文件
docker pull morunchang/fastdfs
3.安装tracker跟踪器容器
docker run -d --name tracker --restart=always --net=host morunchang/fastdfs sh tracker.sh
tracker容器使用host网络,docker容器中的几种网络模式,这里就不介绍了,后面有时间进行补充。
4.进入tracker容器
docker exec -it tracker /bin/bash
修改文件 nginx.conf
vi /etc/nginx/conf/nginx.conf
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8089; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location ~ /M00 { root /data/fast_data/data; ngx_fastdfs_module;
...................
这里是nginx监听tracker的端口号,即tracker的访问端口号,不过,需要直接访问tracker么?
修改文件client.conf
vi /etc/fdfs/client.conf . . # the base path to store log files base_path=/data/fast_data # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address tracker_server=x.x.x.x:22122 #这里的这个IP是你本地/服务器的ip,端口号tracker的端口号,你需要自己指定,但是需要跟tracker.conf文件中的端口号一致。 # specify storage ids filename, can use relative or absolute path # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # since V4.05 storage_ids_filename = storage_ids.conf #HTTP settings http.tracker_server_port=8089 #use "#include" directive to include HTTP other settiongs ##include http.conf 这里的端口号是tracker的访问端口号,和上面的22122不是一个。
修改文件tracker.conf
vi /etc/fdfs/tracker.conf ...... disabled=false # bind an address of this host # empty for bind all addresses of this host bind_addr= # the tracker server port port=22122 #这个端口号是tracker的端口号。 # connect timeout in seconds # default value is 30s connect_timeout=30 connection_pool_max_idle_time = 3600 # HTTP port on this tracker server http.server_port=8089 这个是tracker的监听端口号,http访问的端口号。好像该不该都无所谓 # check storage HTTP server alive interval seconds # <= 0 for never check # default value is 30 http.check_alive_interval=30
5.退出容器
6.安装storage储存器容器
现在/home下面创建文件夹
[root@0007 ~]# mkdir -p /home/docker/fastdfs/storage/
docker run -d --name storage --net=host --restart=always -e TRACKER_IP=189.215.159.153:22122 -v /home/docker/fastdfs/storage:/data/fast_data -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh #IP建议用公网ip,私网的ip网络进入不了
注意:这里的端口号是tracker容器的ip和端口号,不是tracker的http访问的端口号。
进入容器
docker exec -it storage /bin/bash 修改文件nginx.conf vi /etc/nginx/conf/nginx.conf
.... ... http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; #######支持https########### #listen 443 ssl; #server_name xx.xxxxx.com; #ssl on; #ssl_certificate /etc/nginx/cert/211131438400047.pem; #必须得先把这两个证书准备好 #ssl_certificate_key /etc/nginx/cert/211131438400047.key; #ssl_session_timeout 5m; #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #ssl_prefer_server_ciphers on; #######支持https########### #这里是storage容器的监听端口号。 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; }
为了支持https需要在容器里面做一下操作
apt-get update git clone https://github.com/happyfish100/libfastcommon.git git clone https://github.com/happyfish100/fastdfs-nginx-module.git cd libfastcommon/ ./make.sh ./make.sh install apt-get install wget wget http://nginx.org/download/nginx-1.13.12.tar.gz tar -xvf nginx-1.13.12.tar.gz mv nginx-1.13.12 nginx cd nginx apt-get install openssl libssl-dev ./configure --prefix=/etc/nginx --add-module=/data/fastdfs-nginx-module/src --with-http_stub_status_module --with-http_ssl_module make make install /etc/nginx/sbin/nginx -v
/etc/nginx/sbin/nginx -s reload
查看是否已经监听443端口
root@0005:/# ss -tnpl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22122 *:* LISTEN 0 128 *:6379 *:* LISTEN 0 128 *:111 *:* LISTEN 0 128 *:8080 *:* users:(("nginx",pid=6396,fd=6)) LISTEN 0 128 *:22 *:* LISTEN 0 128 *:23000 *:* users:(("fdfs_storaged",pid=13,fd=5)) LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:443 *:* users:(("nginx",pid=6396,fd=7)) LISTEN 0 1 127.0.0.1:32000 *:* LISTEN 0 128 :::6379 :::* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 :::15671 :::* LISTEN 0 128 :::15672 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::5671 :::* LISTEN 0 128 :::5672 :::* LISTEN 0 128 :::25672 :::* root@0005:/#
以上443端口已经监听,已经支持https形式
修改文件client.conf
vi /etc/fdfs/client.conf #不再本容器测试就不用改
tracker容器的访问端口号
修改文件storage的storage.conf
vi /etc/fdfs/storage.conf client_bind=true # the storage server port port=23000 # connect timeout in seconds # default value is 30s . . . connection_pool_max_idle_time = 3600 # use the ip address of this storage server if domain_name is empty, # else this domain name will ocur in the url redirected by the tracker server http.domain_name= # the port of the web server on this storage server
#storage的访问端口号 #http.server_port=8888 http.server_port=8080
7.退出容器,重启tracker和storage
docker restart storage tracker
netstat -tnlp #查看监听的端口
cd /home/docker/fastdfs/storage/data/00/00/ #进入容器上传图片 [root@0007:/]# fdfs_test /etc/fdfs/client.conf upload xxxxx.jpg
8.报错调整ERROR - file: tracker_proto.c, line: 48, server: 10.171.22.124:22122, response status 2 != 0
排查思路:
在tracker上使用fdfs_monitor /etc/fdfs/client.conf 命令查看storage的状态是offline
fdfs_monitor /etc/fdfs/client.conf delete group1 storage的IP地址。 #先在tracker上删除storage的信息。
rm -rf /data/fastdfs/data #删除storage的数据目录。
service fdfs_storaged restart #重启storage
在tracker上再次使用fdfs_monitor查看storage的状态,显示active。上传图片,正常了。