关注我更多精彩文章第一时间推送给你
讲真的我这辈子绝对不会学docker-----------------能香,哈哈!
docker在centos7的安装方式建议看官网教程,否则docker安装nginx极可能出错。html
安装docker能够直接参照我简书上的安装过程 https://www.jianshu.com/p/3b28f3416ddanginx
<!--more-->docker
-
用docker安装Nginx的过程又学到了不少,例如复制docker容器内的文件到宿主机上等等数据库
-
使用nginx的很重要的一点是修改nginx.conf这个配置文件windows
-
首先从dockerhub上拉取nginx最新的镜像centos
docker pull nginx
-
先简单的启动一个nginx容器,为了从容器中复制nginx.conf文件浏览器
# docker启动nginx容器,命名为test docker run --name test -d nginx
-
查看nginx容器idbash
docker ps -a
注意:docker启动nginx须要两个配置文件
<a href="https://blog.csdn.net/weixin_42880943/article/details/100777093?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task" class="LinkCard">此处参考☛迷彩诱惑的青春</a> https://blog.csdn.net/weixin_42880943/article/details/100777093?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task服务器
- 一个是位于容器内部的
/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镜像
- 开启防火墙相关端口
#开启宿主机防火墙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中了
到这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
-
用nginx是方便咱们使用http协议访问静态资源服务器
-
其实只须要安装vsftpd就能ftp协议上传图片了,浏览器访问
ftp://192.168.16.128
,填写咱们以前设置的用户名root
密码5678