對于開發人員來說,要學習很多的容器、緩存、消息中間件、數據庫等。比如: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)。