docker部署nginx并且挂载文件夹和文件 *** 作

docker部署nginx并且挂载文件夹和文件 *** 作,第1张

docker部署nginx并且挂载文件夹和文件 *** 作

本文主要介绍docker对nginx的部署以及挂载文件夹和文件的 *** 作。有很好的参考价值,希望对大家有所帮助。来和边肖一起看看吧。

这段时间在研究docker,部署nginx的时候遇到了坑。主要问题是我不知道如何挂载文件和文件夹。经过反复实验和查网上教程,我先总结如下:

1拉先下载nginx镜像包。

码头工人拉nginx

2(关键)检查nginx镜像中配置文件、日志等文件的具体位置。只有找到镜像配置文件的路径,才能挂载它后面的文件和文件夹来覆盖这些路径。

打开镜像容器作为终端。

[root@docker2nginx]#dockerrun-i-tnginx/bin/bash root@3b39da9212fe:/#ls-l total8 drwxr-xr-x2rootroot4096Apr2600:00bin drwxr-xr-x2rootroot6Feb2323:23boot drwxr-xr-x5rootroot360May3001:39dev drwxr-xr-x1rootroot66May3001:39etc drwxr-xr-x2rootroot6Feb2323:23home drwxr-xr-x1rootroot45Apr2600:00lib drwxr-xr-x2rootroot34Apr2600:00lib64 drwxr-xr-x2rootroot6Apr2600:00media drwxr-xr-x2rootroot6Apr2600:00mnt drwxr-xr-x2rootroot6Apr2600:00opt dr-xr-xr-x176rootroot0May3001:39proc drwx------2rootroot37Apr2600:00root drwxr-xr-x4rootroot43Apr2600:00run drwxr-xr-x2rootroot4096Apr2600:00sbin drwxr-xr-x2rootroot6Apr2600:00srv dr-xr-xr-x13rootroot0May2506:07sys drwxrwxrwt1rootroot6Apr3013:55tmp drwxr-xr-x1rootroot66Apr2600:00usr drwxr-xr-x1rootroot17Apr2600:00var

在镜像中找到nginx.conf配置文件路径/etc/nginx/nginx.conf

root@3b39da9212fe:/etc/nginx#ls-l/etc/nginx/ total36 drwxr-xr-x2rootroot26Apr3013:55conf.d -rw-r--r--1rootroot1007Apr916:01fastcgi_params -rw-r--r--1rootroot2837Apr916:01koi-utf -rw-r--r--1rootroot2223Apr916:01koi-win -rw-r--r--1rootroot5170Apr916:01mime.types lrwxrwxrwx1rootroot22Apr916:01modules->/usr/lib/nginx/modules -rw-r--r--1rootroot643Apr916:01nginx.conf -rw-r--r--1rootroot636Apr916:01scgi_params -rw-r--r--1rootroot664Apr916:01uwsgi_params -rw-r--r--1rootroot3610Apr916:01win-utf

找到default.conf配置文件/etc/nginx/etc/nginx/conf.d/default.conf的路径

root@3b39da9212fe:/etc#ls-l/etc/nginx/conf.d/ total4 -rw-r--r--1rootroot1093Apr916:01default.conf

找到默认的主文件夹html路径/usr/share/nginx/html

root@3b39da9212fe:/etc#ls-l/usr/share/nginx/ total0 drwxr-xr-x2rootroot40Apr3013:55html

找到日志文件路径/var/log/nginx

ls-l/var/log/ total96 drwxr-xr-x1rootroot60Apr3013:55apt -rw-rw----1rootutmp0Apr2600:00btmp -rw-r--r--1rootroot57602Apr3013:55dpkg.log -rw-r--r--1rootroot3264Apr3013:55faillog -rw-rw-r--1rootutmp29784Apr3013:55lastlog drwxr-xr-x1rootroot41Apr3013:55nginx -rw-rw-r--1rootutmp0Apr2600:00wtmp

然后输入exit退出集装箱码头。

使用nginx映像启动容器mynginx,并将文件夹和文件装入容器。

这就是我为什么要挂载配置文件和文件夹的原因。如果部署应用,轻松修改nginx的配置文件,如果挂载文件或文件夹,只需要修改挂载源或文件夹中的文件,而不用每次都使用dockerrun-i-tnginx/bin/bash命令进入镜像终端修改配置文件。接下来,我将演示如何修改自己的nginx主页,并将其挂载到一个容器中,以覆盖原来的默认主页。

在linux系统下创建挂载源文件和文件夹(我的是centos7)

mkdir-p/data/nginx/conf mkdir-p/data/nginx/conf.d mkdir-p/data/nginx/html mkdir-p/data/nginx/logs

然后在conf文件夹下创建一个nginx.conf配置文件,输入内容。建议你不要抄袭我的配置。使用上面我介绍的第一步的方法,进入nginx容器的终端,将nginx.conf配置文件的内容复制到linux系统中新创建的nginx.conf文件中进行修改。这确保了配置文件中的路径与镜像中的路径一致。

[root@docker2/]#cd/data/nginx/conf [root@docker2conf]#morenginx.conf usernginx; worker_processes1; error_log/var/log/nginx/error.logwarn; pid/var/run/nginx.pid; events{ worker_connections1024; } http{ include/etc/nginx/mime.types; default_typeapplication/octet-stream; log_formatmain'$remote_addr-$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent""$http_x_forwarded_for"'; access_log/var/log/nginx/access.logmain; sendfileon; #tcp_nopushon; keepalive_timeout65; #gzipon; include/etc/nginx/conf.d/*.conf; }

在conf.d中创建一个default.conf文件,并输入内容。同样,这个内容也是我从镜像中default.conf的默认配置文件中复制并修改的。还有,我建议你不要复制我的内容,因为涉及到的路径可能和你nginx镜像中的路径不一致,所以你不能在启动镜像创建容器的时候通过挂载来覆盖容器中的路径。

[root@docker2conf]#more/data/nginx/conf.d/default.conf server{ listen80; server_namelocalhost; #charsetkoi8-r; #access_log/var/log/nginx/host.access.logmain; location/{ root/usr/share/nginx/html; index1.html; } #error_page404/404.html; #redirectservererrorpagestothestaticpage/50x.html # error_page500502503504/50x.html; location=/50x.html{ root/usr/share/nginx/html; } #proxythePHPscriptstoApachelisteningon127.0.0.1:80 # #location~\.php${ #proxy_passhttp://127.0.0.1; #} #passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000 # #location~\.php${ #roothtml; #fastcgi_pass127.0.0.1:9000; #fastcgi_indexindex.php; #fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name; #includefastcgi_params; #} #denyaccessto.htaccessfiles,ifApache'sdocumentroot #concurswithnginx'sone # #location~/\.ht{ #denyall; #} }

大家注意了。在这里,我修改了原始默认配置文件的内容。在上面的一个位置,我把nginx的默认主页索引改成了1.html,1.html是我自己创建的主页名。

在html文件夹下创建html主页文件,并编写自己的主页。在这里,我用notepad++编写了windows上的1.html文件,并用工具将其复制到linux系统中。注意,如果有中文,可能需要转换代码,否则可能是乱码。例如,我在这里使用ansi代码。

<html> <head> <title>Mynginx</title> </head> <body> <h1> 欢迎使用nginx! </h1> </body> </html>

现在是时候创建容器并挂载文件和文件夹了。

[root@docker2conf]#dockerrun--namemynginx-d-p80:80-v/data/nginx/html:/usr/share/nginx/html-v/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-v/data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf-v/data/nginx/logs:/var/log/nginxnginx

记住挂载的目的目录或者文件路径要和镜像中的路径一致,比如/etc/nginx/nginx.conf,这个在第二步已经查出来了。

Dockerps,检查一下是否启动成功。

[root@docker2conf]#dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 32ad171d34a2nginx"nginx-g'daemonof…"17hoursagoUp17hours0.0.0.0:80->80/tcpmynginx

如果没有成功启动,应该先用dockerps-a检查失败的容器,删除dockerrmCONTAILNERID的容器ID,然后查找问题,再用dockerrun重新启动容器。如果在确保挂载的目录和文件没有问题之后,不能启动容器,那么就是权限问题。网上说的是在docker运行后加一个-privileged=true参数。

Http://IP打开网页看看效果

以上nginx的docker部署,文件夹和文件的挂载,都是边肖分享的内容。希望给大家一个参考,支持我们。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存