跳至主要內容

docker安装fastdfs

tanmantang原创大约 4 分钟dockerfastdfs文件管理

准备工作

注意

以下操作必须在能联网的服务器上,如果需要在离线环境下安装,需先从能联网的服务器上拉取 然后通过docker save -o fastdfs.tar delron/fastdfs把镜像打成tar包,将tar包拷贝到离线服务器 最后通过docker load -i fastdfs.tar 解压成镜像

拉取镜像

docker pull delron/fastdfs

查看拉取的镜像

docker images

创建本地挂载目录

为了方便存储fastdfs数据,防止数据丢失

mkdir -p /data/docker/fdfs/tracker
mkdir -p /data/docker/fdfs/storage

复制配置文件

启动一个简单的tracker容器,用来复制配置文件

cd /data/docker/fdfs/
docker run -dti --name tracker delron/fastdfs tracker

复制配置文件命令查看

查看启动是否成功,日志未报错,docekr ps 能看到端口状态为Up即可

docker ps
docker logs tracker

复制配置文件到挂载目录

docker cp tracker:/etc/fdfs /data/docker/fdfs/

查看复制的文件

查看复制的文件

好了,配置文件复制后,测试用的tracker可以删除了

docker stop tracker
docker rm tracker
# 或者使用 docker rm -f tracker 是一样的效果

创建启动脚本

创建tracker容器启动脚本

编辑创建tracker容器的脚本

vim create_tracker.sh

将以下内容保存到脚本

#!/bin/bash

# 设置容器名
name="tracker"

# 若存在相同容器名,则删除该容器
docker rm -f $name

# 启动一个新的容器
docker run -dti --network=host --restart=always --name $name \
 -v /data/docker/fdfs/tracker:/var/fdfs \
 -v /data/docker/fdfs/fdfs:/etc/fdfs \
 -v /etc/localtime:/etc/localtime \
 delron/fastdfs tracker
 
 ## 参数说明
 # -dti 让容器在后台运行
 # --network=host 让容器和宿主机使用同一个网络
 # --restart=always 在重启docker后,保持自启
 # --name 容器名
 # -v 映射文件地址  服务器文件地址:容器内部文件地址
 # delron/fastdfs 镜像
 # tracker 镜像启动命令

创建storage容器启动脚本

编辑创建storage容器的脚本

vim create_storage.sh

保存以下内容

#!/bin/bash
name="storage"
docker rm -f $name
docker run -dti --network=host --name $name --restart=always \
 -e TRACKER_SERVER=10.192.34.51:22122 \
 -v /data/docker/fdfs/storage:/var/fdfs \
 -v /data/docker/fdfs/fdfs:/etc/fdfs \
 -v /etc/localtime:/etc/localtime \
 delron/fastdfs storage
 
 ## 参数说明
 # --network=host 使用host网络,这里让storage和trtracker使用同一个网络
 # --restart=always  让容器在后台运行
 # --name 容器名
 # -e 容器环境变量
 # -v 配置挂载目录 宿主机目录:容器目录

警告

注意此处 10.192.34.51:22122 ,这里改成你 服务器IP地址:tracker启动端口 不能使用127.0.0.1和localhost

ip地址可使用 ifconfig 查看

保存后,给两个脚本添加可执行权限

chmod +x create*.sh

构建容器

tracker 跟踪服务器,起到调度的作用,storage 存储服务器,提供容量和备份服务

./create_tracker.sh
./create_storage.sh
docker ps

查看日志是否启动,如下,能看到端口,日志未报错即可

提示

此处注意 因为容器和宿主机共用一个Network 所以端口是没设置,即不会显示

查看日志是否启动成功图片

测试容器

# 进入storage容器
docker exec -it storage bash
cd /var/fdfs
echo "hello 这是一个测试用例" > a.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt

进入容器命令

执行完毕,会上传一个测试文件,上传成功即和上图一样,会返回文件地址

打开浏览器访问地址你的文件地址,如: http://ip:8888/group1/M00/00/00/CsAiM2KUeWuAWvT4AAAAH93k9Eg015.txt

成功访问(此处乱码显示不重要,重要的是能访问成功)

成功访问截图

问题解决

若你不能正常访问,请检查你的防火墙,若是开启的状态,请开放防火墙端口

firewall-cmd --zone=public --permanent --add-port=8888/tcp
firewall-cmd --zone=public --permanent --add-port=22122/tcp
firewall-cmd --zone=public --permanent --add-port=23000/tcp
firewall-cmd --reload

关闭防火墙

# 查看防火墙状态
firewall-cmd --state
# 停止firewall
systemctl stop firewalld.service
# 禁止firewall开机启动
systemctl disable firewalld.service

修改默认8888端口

进入storage容器,修改nginx.conf

docker exec -it storage bash
cd /usr/local/nginx/conf
vi nginx.conf

修改34行的监听端口,改成你想修改的端口。我这里测试改成8889(默认8888)

修改端口截图1

保存后,退出容器,继续编辑storage配置文件

vim /data/docker/fdfs/fdfs/storage.conf

修改最后一行端口为8889

修改端口截图2

防火墙添加端口

# 重启storage容器
docker restart storage
# 防火墙开放端口
firewall-cmd --zone=public --permanent --add-port=8889/tcp
firewall-cmd --reload

打开浏览器访问地址你刚刚上传的文件地址(端口改成你修改的端口)

http://ip:8889/group1/M00/00/00/CsAiM2KUeWuAWvT4AAAAH93k9Eg015.txt

成功访问,到此结束

修改成功后截图

相关链接:

CentOS 8 安装 FastDFS 6.06open in new window