首先需要创建两个文件夹用于存放数据
mkdir -p /usr/local/docker/fdfs/storage
mkdir -p /usr/local/docker/fdfs/tracker
1. 获取docker镜像
[root@admin local]# docker pull delron/fastdfs
Using default tag: latest
latest: Pulling from delron/fastdfs
469cfcc7a4b3: Pull complete
4b4f08bd0171: Pull complete
95eef9978b96: Pull complete
aff83d00c747: Pull complete
1e95dffa1075: Pull complete
f114184ac28c: Pull complete
649b2ad6afe2: Pull complete
8ab2127a38c5: Pull complete
4d12f9bd27c7: Pull complete
bfc05d82f0a6: Pull complete
76f2a6d84a19: Pull complete
89bd9c4e6fea: Pull complete
6c06548e40ac: Pull complete
11186700b494: Pull complete
Digest: sha256:9583cb80170c153bc12615fd077fe364a8fd5a95194b7cf9a8a32d2c11f8a49d
Status: Downloaded newer image for delron/fastdfs:latest
docker.io/delron/fastdfs:latest
2.创建tracker容器
docker run -d --network=host --name tracker -v /usr/local/docker/fdfs/tracker:/var/fdfs delron/fastdfs tracker
3.创建storage容器
docker run -d --network=host --name storage -e TRACKER_SERVER=192.168.80.128:22122 -v /usr/local/docker/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
完成后使用netstat -aon | grep 22122
查看端口占用情况
4.配置nginx端口(如果不需要修改的可以跳过)
## 进入storage
docker exec -it storage bash
## 编辑端口(默认为8888,如不需要修改可以跳过,如果bash: vim: command not found 使用
## yum install vim 安装后执行)
vim /etc/fdfs/storage.conf
## 修改nginx的端口(与上面保存一致即可)
vi /usr/local/nginx/conf/nginx.conf
## 如果修改后,退出容器重启下storage
docker restart storage
## 查看tracker容器和storage容器的关联
cd /etc/fdfs/
[root@admin fdfs]# ls
client.conf mime.types storage.conf.sample tracker.conf
client.conf.sample mod_fastdfs.conf storage_ids.conf tracker.conf.sample
http.conf storage.conf storage_ids.conf.sample
## 查看关系
fdfs_monitor storage.conf
5.模拟上传
在/usr/local/docker/fdfs/storage中上传一个文件1.png,进入storage容器
## 进入storage容器
docker exec -it storage bash
## 进入fdfs目录
cd /var/fdfs
## ll就可以看见那个文件,没有就是路径错误或者没有上传上去
[root@admin fdfs]# ll
total 164
-rw-r--r--. 1 root root 153070 Apr 2 05:29 1.png
drwxr-xr-x. 259 root root 8192 Apr 2 08:31 data
drwxr-xr-x. 2 root root 25 Apr 2 08:31 logs
## 上传文件
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.png
## 成功后返回
group1/M00/00/00/wKhQgF6FptGALpuFAAJV7nnaW2k051.png
有返回的数据后,通过ip+端口+返回内容即可访问
如果访问不到,考虑防火墙开启,需要将8888,22122,23000加入通行端口后重启防火墙。
## 查看防火墙状态
[root@admin tracker_data]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2020-04-02 11:45:43 CST; 5h 8min ago
Main PID: 916 (firewalld)
Memory: 484.0K
CGroup: /system.slice/firewalld.service
└─916 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
## 将8888,22122,23000加入通行端口
[root@admin tracker_data]# firewall-cmd --zone=public --permanent --add-port=8888/tcp
success
[root@admin tracker_data]# firewall-cmd --zone=public --permanent --add-port=22122/tcp
success
[root@admin tracker_data]# firewall-cmd --zone=public --permanent --add-port=23000/tcp
success
## 重启防火墙
[root@admin tracker_data]# systemctl restart firewalld
6.开启开机启动容器
docker update --restart=always tracker
docker update --restart=always storage
7.开启多个storage
由于镜像是将nginx内置了,所以需要配置将nginx的端口修改为其他的。
首先先建一个storage1文件夹,用于存放另一个storage的数据。
## 创建新的文件夹存储数据
mkdir -p /usr/local/docker/fdfs/storage1
## 创建storage1容器 主要名字,group1可以修改为group2也可以不锈钢
docker run -d --network=host --name storage1 -e TRACKER_SERVER=192.168.80.128:22122 -v /usr/local/docker/fdfs/storage1:/var/fdfs -e GROUP_NAME=group2 delron/fastdfs storage
## 进入storage1容器
docker exec -it storage1 bash
修改storage.cnf
## 1.需要将端口修改为8889,不能与之前的storage一样,但是需要与下面要修改nginx的端口一致
## 2.需要将端口23000修改为23001,否则启动会冲突,且
vim /etc/fdfs/storage.conf
## 修改内容
http.server_port=8889
port=23001
修改nginx的端口
## 修改nginx的端口,这里需要与storage.conf中的http.server_port一致
vim /etc/fdfs/nginx.conf
修改mod_fastdfs.conf中内容
## 需要将storage_server_port=23000修改为23001
vim /etc/fdfs/mod_fastdfs.conf
## 修改如下内容
storage_server_port=23001
完成后重启即可