用Docker安装nginx和vsftpd搭建文件服务器

算法聆雪人
• 阅读 3624

讲真的我这辈子绝对不会学docker-----------------能香,哈哈!

docker在centos7的安装方式建议看官网教程,不然docker安装nginx很可能出错。

安装docker可以直接参照我简书上的安装过程
https://www.jianshu.com/p/3b2...

<!--more-->

  • 用docker安装Nginx的过程又学到了很多,例如复制docker容器内的文件到宿主机上等等
  • 使用nginx的很重要的一点是修改nginx.conf这个配置文件
  • 首先从dockerhub上拉取nginx最新的镜像

    docker pull nginx
  • 先简单的启动一个nginx容器,为了从容器中复制nginx.conf文件

    # docker启动nginx容器,命名为test
    docker run --name test -d nginx
  • 查看nginx容器id

    docker ps -a

    注意:docker启动nginx需要两个配置文件

    此处参考☛迷彩诱惑的青春
    https://blog.csdn.net/weixin_...

    • 一个是位于容器内部的/etc/nginx/nginx.conf
    • 另一个是位于容器内部的/etc/nginx/conf.d/default.conf
    • default.conf配置的是server { } 的内容

## 所以在这里我们需要把这两个配置文件复制到宿主机用于挂载

  • 创建目录用于存放nginx.conf 和 default.conf

    # -p创建多级目录
    mkdir /usr/docker/nginx -p
    mkdir /usr/docker/nginx/conf.d/ -p
  • 从nginx容器中复制出nginx文件到刚才新建的目录

    # docker复制容器id为e9bf057b53bb的/etc/nginx/nginx.conf路径的nginx.conf文件到容器外宿主机的/docker/nginx/目录
    docker cp e9bf057b53bb:/etc/nginx/nginx.conf /usr/docker/nginx/
    # 复制default.conf,含义参考上条注释
    docker cp e9bf057b53bb:/etc/nginx/conf.d/default.conf /usr/docker/nginx/conf.d/
  • 复制出来之后删除刚才临时启动的test的容器

    #停止名为test的容器
    docker stop test
    #删除名为test的容器
    docker rm test
  • 重新启动一个完整的nginx容器

    docker run -d -p 80:80 \
    --name nginx --net host \
    -v /usr/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /usr/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
    -v /usr/docker/nginx/html:/usr/share/nginx/html \
    -v /usr/docker/vsftpd/root:/mnt/data \
    -v /usr/docker/nginx/logs:/var/log/nginx \
    --privileged=true --restart=always nginx

下面的配置解释很重要****结合我default.conf的配置看

解释:

-p 宿主机的80端口映射到容器的80端口

--name nginx 容器命名为nginx

--net host 容器和宿主机公用网络

-v 映射宿主机和容器内的路径,首先是把两个配置文件nginx.conf和default.conf从容器目录映射到宿主机的/usr/docker/nginx下的相应目录中,之后只要改宿主机的配置就相当于改了容器中的配置文件。

其次看下面图片中的配置全是去找的容器相应位置的文件,没错,就是找容器相应位置,但是这些位置我也做了映射,例如把nginx的主页位置映射到了/usr/docker/nginx/html最重要的是把静态资源的位置映射到了宿主机的vsftpd静态资源服务器/usr/docker/vsftpd/root目录下,结合default.conf中的配置,就能通过nginx访问vsftpd下的静态图片文件了。

-v 还做了日志文件目录的映射

--privileged=true 给容器内root权限

--restart=always 随docker自启动

启动nginx:latest镜像

用Docker安装nginx和vsftpd搭建文件服务器

  • 开启防火墙相关端口
#开启宿主机防火墙80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看防火墙已经启动的端口
firewall-cmd --zone=public --list-ports
  • 这时候打开浏览器访问宿主机ip我这里是192.168.137.100就应该访问调到nginx欢迎页,这里会报错403因为/usr/docker/nginx/html路径下并没有index.html这个欢迎页
  • 额,但是准确的说nginx已经作为docker容器启动了

    # 简单的自己写一个欢迎页吧,最起码访问宿主机ip我这是192.168.137.100要看到效果啊
    cd /usr/docker/nginx/html
    # 添加一个index.html文件写入hello nginx
    echo "hello nginx" > index.html
    # 容器中的nginx热更新
    docker exec -it nginx  nginx -s reload
    # 不管用就直接重启ngixn容器
    docker restart nginx
    # 强迫症非要nginx首页如我的话,我直接拷贝windows中nginx的index页到/usr/docker/nginx/html中了

用Docker安装nginx和vsftpd搭建文件服务器

用Docker安装nginx和vsftpd搭建文件服务器

到这nginx容器启动好了,下面启动vsftpd容器

#拉取vsftpd镜像
docker pull fauria/vsftpd
#启动容器
docker run -d -v /usr/docker/vsftpd:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=root -e FTP_PASS=123456 \
-e PASV_ADDRESS=192.168.137.100 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --privileged=true --restart=always fauria/vsftpd
#开启20防火墙端口
firewall-cmd --zone=public --add-port=20/tcp --permanent
#开启21防火墙端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
#开启21100-21110防火墙端口
firewall-cmd --zone=public --add-port=21100-21110/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看防火墙已经启动的端口
firewall-cmd --zone=public --list-ports
docker启动命令解释:

-v挂载目录,相当于把容器内目录挂载到本地

-p 端口映射本地20容器20 ....等等

-e 分别设置用户名、密码、宿主机地址、最小最大端口

--name 命名容器为vsftpd

--privileged=true 给容器root权限

--restart=always 随docker开启而自启动

fauria/vsftpd 运行的run的这个名字的镜像

  • 打开浏览器访问ftp://192.168.137.100
  • 至此文件服务器搭建成功
  • 将新的FTP用户添加到现有容器中

    # 进入容器内部
    docker exec -it vsftpd bash
    # 新建myuser用户的文件夹
    mkdir /home/vsftpd/myuser
    # 添加新用户myuser换行密码5678写入文件中
    echo -e "myuser\n5678" >> /etc/vsftpd/virtual_users.txt
    # 密码写入数据库
    /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
    # 退出容器内部
    exit
    # 重启vsftpd
    docker restart vsftpd
  • 通过nginx访问到静态资源服务器中的图片了http://192.168.16.128/images/test.png

用Docker安装nginx和vsftpd搭建文件服务器

  • 用nginx是方便我们使用http协议访问静态资源服务器
  • 其实只需要安装vsftpd就能ftp协议上传图片了,浏览器访问ftp://192.168.16.128,填写我们之前设置的用户名root 密码5678

用Docker安装nginx和vsftpd搭建文件服务器

本文由博客群发一文多发等运营工具平台 OpenWrite 发布
点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
springboot之docker化
1、Docker安装本人是centos7系统,安装也是按照官方文档进行安装。https://docs.docker.com/install/linux/dockerce/centos/,即1、sudoyuminstallyyumutils\devicemapperpersistentdata\
Wesley13 Wesley13
4年前
ubuntu18.04下系统级代理自动路由(包括浏览器、终端、apt
一、远程服务端(shadowsocks服务)远端服务服务器安装shadowsocks服务端,建议使用docker方式。安装docker环境:curlfsSLhttps://get.docker.com|bashsdockermirrorAliyun 安装shadowsocks服务
Stella981 Stella981
4年前
Mac 环境docker 安装jenkins
网上很多的教程是讲的是Linux上的Docker安装Jenkins,但是我用的是Mac,所以参考之前的前辈写的文章,记录一下自己的安装过程。非常感谢参考文章的前辈写的文章。参考Docker安装Jenkins:https://blog.csdn.net/mmd0308/article/details/77206563?locationNum6&
Wesley13 Wesley13
4年前
ubuntu18 Docker 安装 mysql
2\.Docker安装mysqlDocker查找mysql1.在docker中搜索mysqldockersearchmysql上述操作相当于访问hub.docker.com.搜索mysqlOFFICIAL表示官方镜像  AUTOMATED自动构建Tags表示构建的版本安装mysql镜
Wesley13 Wesley13
4年前
4.Grafana展示监控数据
Grafana是什么?我们知道Node\_export监控服务器状态,但是没有具体的展示,简单来说,Grafana的主要作用就是对监控的数据进行图形化展示。docker部署grafana我们这里采用docker方式部署,Docker安装,可参考Centos7下实现dockerwordpress安装(https://
Stella981 Stella981
4年前
Docker 安装
(CentOS7)使用yum方式安装docker:root@localhost~$curlhttps://download.docker.com/linux/centos/dockerce.repoo/etc/yum.repos.d/docker.reporoot@localhost~$yum
Stella981 Stella981
4年前
Docker安装及基本命令
安装/启动Docker在CentOS7上安装Docker默认已经包含在CentOSExtra仓库中,使用以下命令安装sudoyuminstalldocker在CentOS6.5上安装对于CentOS6.5,Docker是EPEL(https://www.oschina.net/a
Stella981 Stella981
4年前
Jenkins使用docker构建
Jenkins使用docker构建Jenkinsmaster要将构建任务分配给Docker,就必须在Jenkinsagent上安装Docker。建议给这些agent打上docker的标签。在Jenkinsagent上安装Docker注意要将Jenkinsagent的用户加入Docker的
Stella981 Stella981
4年前
Idea整合Docker一键推送到服务器
关于Docker开放端口的安全问题强烈建议用CA证书,不然没几天服务器就变矿机安装Docker插件一般新版本idea会自带该插件,2019以上版本可以略过连接Docker!(https://oscimg.oschina.net/oscnet/up1c5bc1f2c3901329670f742
Stella981 Stella981
4年前
Docker容器学习与分享12
Docker多主机管理之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用DockerMachine进行多台主机的Docker安装和管理。具体安装过程可以参照官方文档https://docs.docker.com/machine/installma
Stella981 Stella981
4年前
Docker下MySQL的安装
1概述本文讲述了如何利用Docker去安装MySQL,以及MySQL自定义配置文件的相关设置。2安装Docker首先安装Docker并开启服务:systemctlstartdocker如果没有添加国内源的话建议添加一下,新增/修改/etc/docker/d