Docker容器中运行nginx
作者:hebedich 发布时间:2022-07-06 12:23:07
nginx简介
Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。
docker hub拉取
docker hub 是docker官方的镜像源,里面有做好的nginx docker image,当然也可以发布自己的镜像到上面去。
如果官方镜像速度很慢,可以考虑用
阿里云的docker镜像仓库
主要步骤如下:
登录阿里云的docker镜像仓库
获取专属加速器地址
升级docker客户端(建议在1.6.0以上)
修改daemon配置文件(阿里已经给出了所有的命令,基本上只要copy paste即可)
然后使用
docker pull nginx
就可以快速下载官方的nginx docker image了。
基础的docker命令可以参看Docker初体验
Nginx docker image
在docker官方的页面上,有部分样例的说明。可以发现,网站的主目录是 /usr/share/nginx/html ,这跟我搜到的一些文章的说明不同。
我的需求是实现nginx搭建的文件浏览站。说白了就是下载站。实验室(or校园内)共享文件。原来采用的是 Python救急HttpServer和Ftpserver ,尽管后来采用了 python多线程启动httpserver ,但还是经常因为卡线程的问题,导致地址访问失败。所以那个方法作为临时应急工具还是可以的,但是如果想要长期共享文件,必须采用有完善功能的http server。
nginx的配置文件都在 /etc/nginx/ 下面,可以看到熟悉的 conf.d 文件夹,明显里面是用户自定义配置文件的位置。
修改自定义配置
default.conf文件内容如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
root /usr/share/nginx/html;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
## 下面三行是添加的。
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
只需要完整的复制出来,并添加
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
运行
docker run -p 8001:80 --name mynginx-v /home/embedded_310/haoyueming/2017:/usr/share/nginx/html:ro -v /home/embedded_310/haoyueming/dockerfile/default.conf:/etc/nginx/conf.d/default.conf -d --restart=always nginx
run
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。新建并启动所需要的命令主要为 docker run 。
-p
端口绑定 外部端口 : 容器内端口
–name
给容器制定一个特定的名字,而不是自动生成的一长串hex。
-v
使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去。 -v 本地文件夹:容器里的文件夹:读写权限
-d
更多的时候,需要让 Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
–restart=always
运行容器时使用–restart参数可以指定一个restart策略,来指示在退出时容器应该如何重启或不应该重启。
no – 容器退出时不要自动重启。这个是默认值。
on-failure[:max-retries] – 只在容器以非0状态码退出时重启。可选的,可以退出docker daemon尝试重启容器的次数。
always – 不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
unless-stopped – 不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。
nginx
镜像的名称,表示以什么镜像作为底包新建一个容器。
tips
我之前运行的时候,一般都采用交互式:
-i 保证容器的stdin开启 -t 为容器生成一个tty终端,在命令的最后加一个 /bin/bash 来保证可以交互。但是实际上,nginx并没有运行,导致我以为容器的端口绑定不是持久化的。
以前的错误做法:
docker run -it nginx /bin/bash
猜你喜欢
- 优化客户网站,试图在各大搜索引擎上获得好的排名的时候,算法本身也会产生很多问题,因为Yahoo算法与Google和百度的都不一样。Yahoo
- 5月26日消息,据国外媒体报道,意大利的一位独立互联网安全研究人员Rosario Valotta发现微软IE浏览器中有一个安全漏洞,能够让黑
- 越来越多研究Goolge排名的SEO人发现,Google的排名算法现在越来越倾向于增加用户在网站上的行为模式。比如说他们在网站上停留多久?他
- 相信早期的Google Analytics用户都记得那时候有一个按小时统计的界面。这个界面在刚登录的时候就能看见。通过观察每小时的流量,可以
- 近两年,我们在实际工作中体验到:我们身边的中小型企业一旦准备利用互联网资源帮助自己做一些事情时,再也不会相信搭建一个简单的企业网站能给他们带
- 域名跟着关键词的拼音选取在SEO优化当中,域名所占之优势不容客观。大家也是经常会看到在搜索引擎搜索框内输入关键词的拼音搜出的结果往往都是相应
- 大家可以看首页下面的图文混排栏目块,全部是用的固定栏目,也就是先做出模板,每个栏目都是固定的,无法循环生成.这样就有个问题,标签是不是要一个
- 网站一定要做出自己的特色,和同类站点站点比较,你的站有什么优势?内容上的优势最能拉住访客,页面亲和度也是不可忽视的,如果两个内容差不多的站,
- 第十七届万维网大会(WWW2008)结束招待晚宴在北京人民大会堂举行,昨晚,来自全球的互联网界精英悉数出席。百度总裁李彦宏在晚宴中致辞,并在
- VMware虚拟机有三种网络模式,分别是Bridged(桥接模式)、NAT(网络地址转换模式)、Host-only(主机模式) 。VMwar
- 在开心网等垂直类社交网站(SNS)大获青睐后,搜狐、新浪、腾讯等门户网站相继推出了自己的SNS产品,而网易的SNS计划昨天也首度曝光。记者昨
- 本文实例讲述了Linux环境ActiveMQ部署方法。分享给大家供大家参考,具体如下:ActiveMQ环境部署下载地址:http://act
- 英文站: 高价关键词是一个新手话题英文站和高价关键词是百问不厌的话题,也是很多发布者对Google Adsense收入失望之后的唯一解药。就
- 最近一直都比较忙,所以也没有时间接各种各样的需求,WordPress 折腾得也少了,现在 WordPress 都已经升级到 3.2.1 了,
- 资金不是第一难题记者:如何看待目前整个web2.0行业的问题?如资金短缺、盈利模式难题、风投相对缩减等。试用网徐乐:不要急躁,不要做虚假流量
- 问题:生成静态都设置好了,权限也给足了,可是仍然提示“当前没有生成任务在执行!”,这是什么原因呢?解决:检查下configCreateHtm
- 未送达报告 (NDR) 是向发件人报告邮件传递状态的系统邮件。这种邮件是一种称为“传递状态通知”的常规邮件信息结构的子类。传递状态通知描述三
- 本文讲解如何制作自己的tomcat镜像,并使用tomcat部署项目原料准备:tomcat、jdk安装包,dockerfile文件步骤1、准备
- 1 从信托的网站上,加入到本地的链接联盟中2 如果您有足够的有价值的信息并认识一个教授的话,与地方高校建立链接是有意义的3 加入更好的商业协
- 一、基于linux的Web服务器性能测试的重要性linux作为一种免费的开源操作系统,正越来越受到人们的重视。随着稳定的Linux 2.4内