Docker安装FastDFS(分布式文件系统)并演示图片存储与下载
首先自己已经安装好docker并配置好镜像加速器
1.获取FastDFS Docker镜像来运行FastDFS
docker image pull delron/fastdfs
也可以直接使用打包的镜像备份文件
docker load -i 文件路径/fastdfs_docker.tar
加载好镜像后,就可以开启运行FastDFS的tracker和storage了。
2.创建并运行tracker和storage容器
执行以下命令创建tracker容器并启动服务
docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
表示我们将fastDFS tracker容器运行目录映射到docker创建的Linux虚拟机的 /var/fdfs/tracker目录中
执行以下命令创建storage容器并启动服务
docker run -dti --network=host --name storage -e TRACKER_SERVER=dcokerIP:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
以下为我的创建方式,因为我的dockerIP是192.168.99.100
docker run -dti --network=host --name storage -e TRACKER_SERVER=192.168.99.100:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
表示我们将fastDFS storage运行目录映射到docker创建的Linux虚拟机的/var/fdfs/storage目录中
3.FastDFS的Python客户端
安装
将官网或GitHub等地方下载好的fdfs_client-py-master.zip安装到虚拟环境中
pip install fdfs_client-py-master.zip
pip install mutagen
pip isntall requests
如果安装fdfs_client-py-master.zip失败:可以考虑将fdfs_client-py-master.zip 压缩包下的setup.py 最后两行代码注释掉,再把fdfs_client/storage_client.py第12行注释掉这样就能install成功了
4.在pycharm中测试自己的环境是否真的可以用了
将fdfs_client-py-master.zip里面 fdfs_client/client.conf 复制到木个项目下(可以存放在任意模块下,单位了体现专业性,最好在项目的utils目录下新建fdfsdfs包,在它下面存放client.conf),
需要修改两个地方:
1. base_path=/home/docker(用来存放日志,可以使用docker创建的Linux里面的任意路径,我也是随便找的)
2. tracker_server=192.168.99.100:22122 切记这里的IP一定要是dcoker的IP,换成别的都会被拒绝
OK,到此所有配置都已经完成,现在可以松口气了,下面就是程序测试了。。。
3. 打开ipython执行以下命令
3.1 from fdfs_client.client import Fdfs_client
3.2 client = Fdfs_client(r'md_mall/utils/fastdfs/client.conf') # 如果是Windows环境注意路径前的r转义,如果是mac就忽略了
3.3 ret = client.upload_by_filename(r'C:\Users\gqr\Desktop\01.jpeg') # 典型的Windows路径,哈哈,这个路径指向电脑本地的图片位置
执行完3.3 如果出现以下3行,表示成功
getting connection
3.4 ret # 打印ret的信息,如下所示
{'Group name': 'group1', 'Remote file_id': 'group1\\M00/00/00/wKhjZFuVP_qAI-UTAAC4j90Tziw44.jpeg', 'Status': 'Upload successed.', 'Local file name': 'C:\\Users\\gqr\\Desktop\\01.jpeg', 'Uploaded size': '46.00KB', 'Storage IP': '192.168.99.100'} 注意信息中的file_id、Storage IP,在程序中我们保存完就是要获得它们存入数据库才能再次找到它们并下载
3.5 进入docker终端:/var/fdfs/storage/data/00/00目录下的确有一个 wKhjZFuVP_qAI-UTAAC4j90Tziw44.jpeg
3.6 如果要下载:浏览器地址框 http://192.168.99.100:8888/group1/M00/00/00/wKhjZFuVP_qAI-UTAAC4j90Tziw44.jpeg
5.docker基本命令
# 列出本地已有镜像
docker images
# 从远端下载镜像
docker pull
# 使用镜像创建并启动一个容器(若本地没有该镜像,则会先从远端下载,每次run都会生成一个容器,轻量~)
docker run hub.c.163.com/library/hello-world:latest
# 列出正在运行的容器
docker ps
# 列出所有容器(包括Exited)
docker ps -a
# 启动指定的容器
docker start
# 停止指定的容器
docker stop
# 停止所有运行中的容器
docker stop $(docker ps -q)
# 删除指定容器
docker rm
# 删除所有容器
docker rm $(docker ps -aq)
# 停止并删除容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
# 删除指定镜像(删除镜像前须先停止并删除容器)
docker rmi
关闭、移除、新建主机
docker-machine stop default docker-machine rm default
创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。
docker-machine create --engine-registry-mirror=阿里云镜像加速器 -d virtualbox default
docker-machine create --engine-registry-mirror=https://sxrdctfvgybhujk.mirror.aliyuncs.com -d virtualbox default
连接到远程docker终端
docker-machine ssh default
如果一开始default虚拟机有密码那么可能是创建Linux虚拟机的时候选了默认密码,不要担心,下面是默认的用户名和密码
用户名:docker 密码: tcuser