教你用 docker 快速建立一个文件服务器
2017-10-28 本文已影响1074人
Headwindx
需要的技术
docker, nginx
docker 的出现,将 LXC 容器技术以十分便利的方式带到了世人的面前,充分展示了完美的技术封装,虽然还有一些不完美的地方,但是瑕不掩瑜,我们还是感受一下 docker 为运维人员带来的便利性吧。我们可以在一秒不到的时间建立起一个文件服务器。
nginx 作为异步设计的轻量级服务器带来了高并发性,并且具有很高的稳定性,足够用来做大部分情况的服务器应用,已经超过了 apache httpd 的市场占有率。
配置文件和容器创建
nginx 配置文件 file.conf
log_format p_access.log '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
server
{
listen 8000; # 监听 8000 端口,按需求也可以配置一个前台服务器作子域名转发
index index.html default.html; # 默认首页文件
root /var/www/file; #文件服务器的根路径
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8;
# 这里配置拒绝访问的目录或文件
location ~ (repos)
{
deny all;
}
# 静态文件的过期时间,可以不需要此配置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
# 静态文件的过期时间,可以不需要此配置
location ~ .*\.(js|css)?$
{
expires 12h;
}
# 这里很重要! 将日志转发到 /dev/stdout ,可以通过 docker logs -f 来查看容器日志
access_log /dev/stdout;
}
create_file_server.sh 服务器容器创建脚本:
#!/usr/bin/env bash
if [ ! -d './data' ]
then
mkdir data
fi
# 重点解释这里吧
docker run -dit --name files0 \
--restart always \
-p 3002:8000 \
-v $PWD/file.conf:/etc/nginx/conf.d/file.conf \
-v $PWD/data:/var/www/file \
-w /var/www/file \
nginx
实施
配置和脚本都有了,我们开始吧。在任何你愿意的地方建立一个独立目录,随便叫什么,我就叫他 documents 吧。在 documents 下分别建立 file.conf 和 create_file_server.sh 文件。然后执行脚本 ./create_file_server.sh
,文件服务器的所有数据都将存储在 documents/data 下面。
访问 http://localhost:3002/ 就能看到你的文件了