docker安装fastdfs单机版

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。上传图片,正常了。

原文地址:https://www.cnblogs.com/linyouyi/p/10104909.html