0
点赞
收藏
分享

微信扫一扫

docker-fastdfs

gy2006_sw 2022-01-13 阅读 34
docker

FastDFS系统角色:

  1. 跟踪服务器(Tracker Server):跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
  2. 存储服务器(Storage Server):存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
  3. 客户端(Client):上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

注意:如果宿主机已经有fdfs一定要停止fdfs进程,否则docker容器storage上传的文件会存储到宿主机的指定目录,而不是docker容器中的storage.conf配置文件中指定目录。

查看进程:
# ps -ef | grep fdfs
root     28250 28230  0 09:19 ?        00:00:00 fdfs_trackerd /etc/fdfs/tracker.conf start
root     28263 28230  0 09:19 pts/0    00:00:00 tail -f /var/fdfs/logs/trackerd.log
root     28538 28512  2 09:20 ?        00:00:00 fdfs_storaged /etc/fdfs/storage.conf start
root     28553 28512  0 09:20 pts/0    00:00:00 tail -f /var/fdfs/logs/storaged.log

1.搜索镜像

执行命令:docker search fastdfs

NAME                           DESCRIPTION                                     
season/fastdfs                 FastDFS                                                           
ygqygq2/fastdfs-nginx          整合了nginx的fastdfs                                
luhuiguo/fastdfs               FastDFS is an open source high performance   
morunchang/fastdfs             A FastDFS image                                 
delron/fastdfs                                                                        
qbanxiaoli/fastdfs             FastDFS+FastDHT(单机+集群版)                         
moocu/fastdfs                  fastdfs5.11        

2.拉取镜像
执行命令:docker pull season/fastdfs:1.2 或者 docker pull

season/fastdfs镜像相对纯净些

信息:
Debian GNU/Linux 7 (wheezy)
FastDFS_v4.08
nginx-1.8.0
目录文件:
/fastdfs目录:client	storage  store_path  tracker
/FastDFS_v4.08目录:COPYING-3_0.txt ,README  conf	 ,php_client  storage,HISTORY, client  init.d,restart.sh, test,INSTALL, common ,make.sh ,stop.sh ,tracker
/etc/fdfs目录:client.conf  http.conf	mime.types  storage.conf  tracker.conf
/fdfs_conf目录:anti-steal.jpg,http.conf,mod_fastdfs.conf,storage_ids.conf,client.conf	mime.types  storage.conf,tracker.conf

docker pull delron/fastdfs镜像自带nginx

CentOS Linux release 7.4.1708 (Core)
FastDFS :v5.11
nginx version: nginx/1.12.2
docker.io/delron/fastdfs:latest

3.创建容器并挂载目录

  1. 创建所需要的目录(数据目录、数据存储目录)
    执行命令:
#mkdir -p /usr/local/server/fastdfs/tracker/datamkdir -p /usr/local/server/fastdfs/storage/datamkdir -p /usr/local/server/fastdfs/storage/path
// -p 递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
  1. 创建tracker容器(跟踪服务器容器)
    执行命令:
#docker run -itd --network=host --name tracker -v /home/docker/fdfs/tracker:/var/fdfs delron/fastdfs tracker
//默认端口是22122

#docker run -itd --name tracker \-p 22122:22122 \--restart=always --net host \-v /usr/local/server/fastdfs/tracker/data:/fastdfs/tracker/data \season/fastdfs:1.2 tracker
//命令参数
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
-t: 在新容器内指定一个伪终端或终端。
-d:让容器在后台运行
-p:指定容器内部使用的网络端口映射到我们使用的主机上
--name:指定容器创建的名称
-v:容器跟宿主机之间的挂载目录 (冒号":"前面的目录是宿主机目录,后面的目录是容器内目录)
--net:指定容器的网络模式
--restart=always docker重启容器自动重启

  1. 创建storage容器(存储服务器容器)
    执行命令:
#docker run -itd --network=host --name storage -v /home/docker/fdfs/storage:/var/fdfs -e TRACKER_SERVER=*:22122  -e GROUP_NAME=group1 delron/fastdfs storage

#docker run -itd --name storage \--restart=always --net host \-v /home/docker/fastdfs/storage:/fastdfs/store_path \-e TRACKER_SERVER="*:22122" \season/fastdfs:1.2 storage
// 命令参数
-e 指定容器环境变量

  1. client测试
    两个容器创建完之后,但此时两个容器其实并没有关联起来,可以进入tracker容器,通过client.conf测试一下:
    # docker exec -it tracker bash cd /etc/fdfs/lscat client.conf

    输出的 client.conf 都是默认配置,tracker_server=192.168.209.121:22122
    尝试执行一下连接:fdfs_monitor client.conf
    会得到如下内容:

ERROR - file: ../common/connection_pool.c, line: 84, connect to 192.168.209.121:22122 fail, errno: 110, error info: Connection timed out
  1. 修改client.conf配置文件
docker exec -it tracker  /bin/bash //进入tracker容器

进入容器后不能使用vi vim 命令
可以执行

rpm -qa|grep vim //检查
yum  install vim-enhanced -y //安装
//vim-minimal-7.4.629-6.el7.x86_64
//vim-common-7.4.629-8.el7_9.x86_64
//vim-filesystem-7.4.629-8.el7_9.x86_64 
//vim-enhanced-7.4.629-8.el7_9.x86_64

也可以将配置文件复制到宿主机,修改完后在粘贴回去

docker cp trakcer:/etc/fdfs/client.conf /usr/local/server/fastdfs/

修改后保存,然后将修改后的文件替换回去。指令命令:

docker cp /usr/local/server/fastdfs/client.conf tracker:/etc/fdfs 

4.文件上传测试

执行命令:

docker exec -it tracker /bin/bash //tracker容器上传
echo "hello " > a.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt(/home/11.png)
docker exec -it storage /bin/bash //storage容器上传

复制出这个文件名来:group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt,这个名称后面有用,将用作后面配置nginx时配置访问文件路径。

因为之前挂载了宿主机的目录,去 cd

/usr/local/server/fastdfs 看一下:
cd /usr/local/server/fastdfs/data/storage/data
ls
会得到有规律的文件夹

5.fdfs_monitor查看确认storage是否自动注册到tracker中
在storage容器或者tracker容器中运行fdfs_monitor /etc/fdfs/storage.conf

nginx
{
root /var/fdfs/data;

}

# find / -name nginx
/tmp/nginx
/tmp/nginx/nginx-1.12.2/objs/nginx
/usr/local/nginx
/usr/local/nginx/sbin/nginx
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
举报

相关推荐

0 条评论