对于开发人员来说,要学习很多的容器、缓存、消息中间件、数据库等。比如:tomcat,jboss,websphere,redis,mongoDB,mq,mysql等。但是在自己项目中不一定都会用到,为了学习,经常会在自己的电脑上安装虚拟机,然后把这些工具安装到虚拟机上,再抽出时间来学习、研究。但是由于下载麻烦并且还会涉及版本的问题,以及下载源都是英文的,下载非常的不方便。现在我们会简单的使用docker,这些问题就迎刃而解了。今天我们就通过docker安装nginx来给大家举个例子吧。
一、什么是Nginx?
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的是一个高性能的 HTTP 和反向代理 web 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
二、Nginx的优点。
1.可以高并发连接。
因为Nginx是基于AIO的线程模型,而Tomcat8以后是默认的NIO的线程模型,Tomcat8之前是默认的BIO的线程模型。基于AIO线程模型的Nginx消耗的资源更加少,性能更好。可以支持大量的并发,在实际生产中可以支持2-4万的并发连接数。
2.成本低廉。
在并发数较大的项目上经常会使用负载均衡机制,一些银行则会使用F5BIG-IP等硬件负载均衡交换机,需要至少10万以上的人民币。而在一些项目经费不是特别多的公司,和很多的互联网公司来说更加倾向与使用免费的,Nginx经常用来做负载均衡使用,因为是开源软件,即使商用也是免费的,因此很多的公司使用Nginx负载均衡,解决高并发问题。
3.Nginx的功能很多。
除了负载均衡之外,还有反向代理,黑白名单,限流,支持热部署,支持集群化部署。
三、Docker安装Nginx。
1.使用docker命令查看可用版本。
docker search nginx
docker search nginx
2.拉取最新版的nginx镜像。
docker pull nginx:latest
docker pull nginx:latest
3.查看本地镜像。
docker images
docker images
4.运行nginx容器。
docker run --name nginx2 -p 8080:80 -d nginx
- --name nginx2:容器名称。
- -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d nginx: 设置容器在在后台一直运行。
5.通过浏览器访问,确认安装成功。
确认访问nginx首页成功,nginx安装成功。
6.安装过程中可能出现的问题。
1>启动nginx容器报错:WARNING: IPv4 forwarding is disabled. Networking will not work.
解决方案:
vi /usr/lib/sysctl.d/00-system.conf 添加如下代码: net.ipv4.ip_forward=1 重启network服务 systemctl restart network
2>当启动nginx服务时,发现命名出现冲突:
docker: Error response from daemon: Conflict. The container name "/nginx-test" is already in use by container "33045ccc414f321d0920ae4a5e0e11160603d909855ce5a54eaccc7ee66ec3b6". You have to remove (or rename) that container to be able to reuse that name.
命名出现冲突,可以运行一个名字不同的容器,比如我的命名为了nginx2,也可以删除之前的容器。
3>在浏览器无法访问nginx服务。
确定网络是否配好,然后ip+端口号(在这里为8080)。