使用docker安装fastdfs

0、前期准备工作:

查看CentOS版本
[root@VM-8-7-centos ~]# lsb_release -a

CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上
[root@VM-8-7-centos ~]# uname -r

1、用yum源安装docker并启动(方法一):
查看是否已安装docker列表
[root@VM-8-7-centos ~]# yum list installed | grep docker

安装docker
[root@VM-8-7-centos ~]# yum -y install docker

启动docker
[root@VM-8-7-centos ~]# systemctl start docker

查看docker服务状态,当看到Active: active (running)时,说明启动成功
[root@VM-8-7-centos ~]# systemctl status docker



1、用yum源安装docker并启动(方法二):
以下命令都是在root账号权限下执行的

1、安装相关依赖
[root@VM-8-7-centos ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@VM-8-7-centos ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2、安装最新版本的Docker CE和containerd
[root@VM-8-7-centos ~]# yum install docker-ce docker-ce-cli containerd.io

3、启动Docker
[root@VM-8-7-centos ~]# systemctl start docker

4、通过运行hello-world 映像验证是否正确安装了Docker CE 。
[root@VM-8-7-centos ~]# docker run hello-world

5、ip addr查看docker是否成功安装,可以看到有三个IP段lo、eth0、docker0,最后的docker0就是我们安装成功的部分
[root@VM-8-7-centos ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:9b:a1:8e brd ff:ff:ff:ff:ff:ff
    inet 10.0.8.7/22 brd 10.0.11.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe9b:a18e/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:e0:ca:af:52 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

6、启动docker命令
[root@VM-8-7-centos ~]# systemctl start docker.service

7、设置开机启动docker
[root@VM-8-7-centos ~]# systemctl enable docker

8、查看版本
[root@VM-8-7-centos ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-203.git0be3e21.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      0be3e21/1.13.1
 Built:           Thu Nov 12 15:11:46 2020
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-203.git0be3e21.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      0be3e21/1.13.1
 Built:           Thu Nov 12 15:11:46 2020
 OS/Arch:         linux/amd64
 Experimental:    false

区别:centos7默认安装的docker都是免费的社区版版本
2、查找Docker Hub上的fastdfs镜像:
查找fastdfs镜像
[root@VM-8-7-centos ~]# docker search fastdfs

拉取最新版本
[root@VM-8-7-centos ~]# docker pull delron/fastdfs

查看镜像
[root@VM-8-7-centos ~]# docker images

使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用)
[root@VM-8-7-centos ~]# docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs tracker

*** 注意:TRACKER_SERVER=本机的ip地址:22122 本机ip地址不要使用127.0.0.1

使用docker镜像构建storage容器(存储服务器,提供容量和备份服务)
[root@VM-8-7-centos ~]# docker run -dti  --network=host --name storage -e TRACKER_SERVER=192.168.56.1:22122 -v /var/fdfs/storage:/var/fdfs  -v /etc/localtime:/etc/localtime  delron/fastdfs storage


3、如果ip设置错了,请看下面的步骤
查看当前运行下的镜像进程
[root@VM-8-7-centos logs]# docker ps -a
停止storage这个镜像
[root@VM-8-7-centos logs]# docker stop [填写你的storage的CONTAINER ID] 
删除storage这个镜像
[root@VM-8-7-centos logs]# docker stop [填写你的storage的CONTAINER ID] 
之后再重新新建
4、fastdfs启动之后的操作
查看可以看到storage、tracker两个已经启动起来了
[root@VM-8-7-centos logs]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
21c94b7f0547        delron/fastdfs      "/usr/bin/start1.s..."   8 minutes ago       Up 8 minutes                            storage
bc258c1b3dfd        delron/fastdfs      "/usr/bin/start1.s..."   8 minutes ago       Up 8 minutes                            tracker

需要重新启动下
[root@VM-8-7-centos logs]# systemctl restart docker

重新查看下状态
[root@VM-8-7-centos logs]# docker status 

进入容器查看storage:
[root@VM-8-7-centos logs]# docker exec -it storage /bin/bash

进入到cd /etc/fdfs下的storage.conf
[root@VM-8-7-centos fdfs]# cd /etc/fdfs
[root@VM-8-7-centos fdfs]# pwd
/etc/fdfs
[root@VM-8-7-centos fdfs]# ll
total 88
-rw-rw-r-- 1 root root  1449 Jan  7 03:49 client.conf
-rw-r--r-- 1 root root  1461 Apr 29  2018 client.conf.sample
-rw-r--r-- 1 root root   955 Apr 29  2018 http.conf
-rw-r--r-- 1 root root 31172 Apr 29  2018 mime.types
-rw-r--r-- 1 root root  3677 Jan  7 03:49 mod_fastdfs.conf
-rw-rw-r-- 1 root root  7891 Jan  7 03:49 storage.conf
-rw-r--r-- 1 root root  7927 Apr 29  2018 storage.conf.sample
-rw-rw-r-- 1 root root   105 Apr 29  2018 storage_ids.conf
-rw-r--r-- 1 root root   105 Apr 29  2018 storage_ids.conf.sample
-rw-rw-r-- 1 root root  7307 Apr 29  2018 tracker.conf
-rw-r--r-- 1 root root  7389 Apr 29  2018 tracker.conf.sample

进入storage.conf
[root@VM-8-7-centos fdfs]# vi storage.conf

--------------------------以下是storage.conf文件--------------------------
# is this config file disabled
# false for enabled
# true for disabled

# 这个是要新添加上去的,其他的不用动
http.server_port=8888

disabled=false

# the name of the group this storage server belongs to
#
# comment or remove this item for fetching from tracker server,
# in this case, use_storage_id must set to true in tracker.conf,
# and storage_ids.conf must be configed correctly.
group_name=group1

# bind an address of this host
# empty for bind all addresses of this host
bind_addr=

# if bind an address of this host when connect to other servers
# (this storage server as a client)
# true for binding the address configed by above parameter: "bind_addr"
# false for binding any address of this host
client_bind=true
......以下省略
--------------------------以上是storage.conf文件--------------------------



5、配置nginx(进入storage配置),此步骤可以不操作
进入容器查看storage:
[root@VM-8-7-centos logs]# docker exec -it storage /bin/bash

在/usr/local/nginx/conf目录下,修改nginx.conf文件
[root@VM-8-7-centos conf]# cd /usr/local/nginx/conf

--------------------------以下是nginx.conf文件--------------------------

 server {
        listen       8888;
        server_name  localhost;
        location ~/group[0-9]/ {
            ngx_fastdfs_module;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root html;
        }
    }

--------------------------以上是nginx.conf文件--------------------------
6、激动人心的时刻到了!!!开始测试上传文件!!!
使用web模块进行文件的上传,将文件上传至FastDFS文件系统。
将一张照片(logo.png)放置在/var/fdfs/storage目录下,进入storage容器,进入/var/fdfs目录,运行下面命令:

1、在宿主机中。

1.1、这个是宿主机,也就是你的服务器,并不是容器里的目录
[root@VM-8-7-centos etc]# cd /var/fdfs/storage

1.2、把图片放在该文件夹下,这里给了一个样例,logo.png
[root@VM-8-7-centos storage]# ll
总用量 16
drwxr-xr-x 259 root root 4096 1月   7 04:17 data
-rw-r--r--   1 root root 5386 1月   7 03:45 logo.png
drwxr-xr-x   2 root root 4096 1月   7 04:04 logs

2、进入进入storage容器,进入/var/fdfs目录。

2.1、进入容器查看storage:
[root@VM-8-7-centos logs]# docker exec -it storage /bin/bash

2.2、进入/var/fdfs下
[root@VM-8-7-centos logs]# cd /var/fdfs
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf [你的图片名称.后缀名]

[root@VM-8-7-centos fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf logo.png
group1/M00/00/00/CgAIB1_2HZ2AIebEAAAVCnox6pU455.png




此时将该图片已上传至文件系统,并在执行该语句后返回图片存储的uri:
group1/M00/00/00/CgAIB1_2HZ2AIebEAAAVCnox6pU455.png
通过url访问:
http://ip:8888/group1/M00/00/00/CgAIB1_2HZ2AIebEAAAVCnox6pU455.png,即可查看到图片
7、开放端口
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

重启防火墙
systemctl restart firewalld
8.开启启动容器
docker update --restart=always tracker
docker update --restart=always storage
能够用得到的一些命令:

docker中 启动所有的容器命令
[root@VM-8-7-centos logs]# docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 关闭所有的容器命令
[root@VM-8-7-centos logs]# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的容器命令
[root@VM-8-7-centos logs]# docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的镜像
[root@VM-8-7-centos logs]# docker rmi $(docker images | awk '{print $3}' |tail -n +2)

文章如果有错误,欢迎指正点评~

文章参考来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容