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

  • 相关阅读:
    LinkedHashMap、HashMap和TreeMap的比较使用
    RocketMQ之Namesrv
    mysql创建、删除、查看索引
    java8 JVM堆内存(heap) 新生代 老年代 元空间垃圾回收详解
    Java中GCRoots包括哪些
    单例模式双重校验锁
    内存屏障
    LockSupport的用法及原理
    HashSet,TreeSet和LinkedHashSet的区别
    Windows常用网络命令技巧汇总
  • 原文地址:https://www.cnblogs.com/linyouyi/p/10104909.html
Copyright © 2020-2023  润新知