欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker搭建一個(gè)nginx服務(wù)的實(shí)現(xiàn)

 更新時(shí)間:2024年08月08日 10:25:51   作者:海綿寶寶de派小星  
Nginx是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù),本文主要介紹了Docker搭建一個(gè)nginx服務(wù)的實(shí)現(xiàn),感興趣的可以了解一下

首先先認(rèn)識(shí)一下nginx服務(wù):

NGINX是一款高性能的Web服務(wù)器和反向代理服務(wù)器軟件,同時(shí)也可用作郵件代理服務(wù)器。它最初由俄羅斯程序員Igor Sysoev開(kāi)發(fā),以其高并發(fā)處理能力、低內(nèi)存消耗和出色的性能優(yōu)化而聞名。

認(rèn)識(shí)nginx服務(wù)

Web服務(wù)器

作為Web服務(wù)器,NGINX負(fù)責(zé)處理來(lái)自客戶端(如瀏覽器)的HTTP請(qǐng)求,將這些請(qǐng)求映射到服務(wù)器上的文件或其他資源,然后返回HTTP響應(yīng)給客戶端。這個(gè)過(guò)程中,NGINX可以處理靜態(tài)內(nèi)容,如HTML、CSS、JavaScript文件等,直接返回給用戶。對(duì)于動(dòng)態(tài)內(nèi)容,比如PHP腳本或Python應(yīng)用生成的內(nèi)容,NGINX通常會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給后端的應(yīng)用服務(wù)器(如PHP-FPM或uWSGI)來(lái)處理,然后再將后端的響應(yīng)返回給客戶端。

在這里插入圖片描述

反向代理服務(wù)器

作為反向代理服務(wù)器,NGINX接收客戶端的請(qǐng)求,并將其轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)中的一個(gè)或多個(gè)服務(wù)器。這個(gè)過(guò)程對(duì)客戶端是透明的,客戶端不知道實(shí)際處理請(qǐng)求的是哪個(gè)后端服務(wù)器。這種配置有助于負(fù)載均衡,即通過(guò)分散請(qǐng)求到多個(gè)服務(wù)器來(lái)提高網(wǎng)站的可用性和擴(kuò)展性。此外,反向代理還可以用于SSL/TLS加密卸載、緩存內(nèi)容、安全防護(hù)(如DDoS攻擊防護(hù))等功能。

高性能特點(diǎn)

  • 事件驅(qū)動(dòng)模型:與傳統(tǒng)的每個(gè)連接/請(qǐng)求一個(gè)線程的模型不同,NGINX使用了異步事件驅(qū)動(dòng)架構(gòu),這意味著它可以同時(shí)處理大量連接而無(wú)需為每個(gè)連接創(chuàng)建單獨(dú)的線程或進(jìn)程,從而大大提高了效率和可伸縮性。
  • 高并發(fā)能力:設(shè)計(jì)上特別適合處理高并發(fā)連接,尤其在處理靜態(tài)內(nèi)容和作為代理服務(wù)器時(shí)表現(xiàn)優(yōu)異。
  • 低資源消耗:由于其高效的架構(gòu),NGINX可以在有限的硬件資源下服務(wù)更多的客戶端連接,降低了運(yùn)行成本。

總之,NGINX是一個(gè)強(qiáng)大且靈活的工具,廣泛應(yīng)用于現(xiàn)代互聯(lián)網(wǎng)架構(gòu)中,無(wú)論是簡(jiǎn)單的靜態(tài)網(wǎng)站托管,還是復(fù)雜的分布式系統(tǒng)部署,都能見(jiàn)到它的身影。

如上所示,是nginx服務(wù)的基本介紹,那么下面就借助Docker完成nginx服務(wù)

安裝nginx

apt install nginx -y

啟動(dòng)nginx

使用

nginx

就能啟動(dòng)nginx,此時(shí)訪問(wèn)一下nginx:

在這里插入圖片描述

當(dāng)看到這個(gè)界面,就說(shuō)明nginx已經(jīng)啟動(dòng)成功了

停止nginx

使用kill命令就可以把進(jìn)程停止

查找nginx鏡像

docker search nginx

拉取nginx鏡像,啟動(dòng)nginx站點(diǎn)

root@VM-24-7-ubuntu:~# docker pull nginx:1.23.3
1.23.3: Pulling from library/nginx
f1f26f570256: Pull complete 
84181e80d10e: Pull complete 
1ff0f94a8007: Pull complete 
d776269cad10: Pull complete 
e9427fcfa864: Pull complete 
d4ceccbfc269: Pull complete 
Digest: sha256:f4e3b6489888647ce1834b601c6c06b9f8c03dee6e097e13ed3e28c01ea3ac8c
Status: Downloaded newer image for nginx:1.23.3
docker.io/library/nginx:1.23.3

此時(shí)本地就會(huì)有nginx的鏡像信息

root@VM-24-7-ubuntu:~# docker images;
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
nginx                         latest    4f67c83422ec   9 days ago      188MB
hello-world                   latest    d2c94e258dcb   13 months ago   13.3kB
myregistry.com/myhelloworld   latest    d2c94e258dcb   13 months ago   13.3kB
nginx                         1.23.3    ac232364af84   14 months ago   142MB

接著運(yùn)行鏡像

docker run --name nginx1 --rm -it -p 80:80 nginx:1.23.3 bash

運(yùn)行鏡像之后,此時(shí)就會(huì)進(jìn)入到容器中進(jìn)行運(yùn)行,比如:

在這里插入圖片描述

此時(shí)我們檢查一下操作系統(tǒng)的版本:

root@47a7ad5b7c9f:/# cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

就會(huì)發(fā)現(xiàn),此時(shí)的版本不是Ubuntu,我們?cè)匍_(kāi)一個(gè)新的shell看一下當(dāng)前版本的操作系統(tǒng)

test@VM-24-7-ubuntu:~$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

這才是本地shell,說(shuō)明我們的Docker服務(wù)已經(jīng)運(yùn)行成功了,此時(shí)已經(jīng)進(jìn)入到了容器的shell當(dāng)中

我們?cè)谌萜鱯hell中啟動(dòng)nginx服務(wù):

root@47a7ad5b7c9f:/# nginx
2024/06/08 03:23:53 [notice] 9#9: using the "epoll" event method
2024/06/08 03:23:53 [notice] 9#9: nginx/1.23.3
2024/06/08 03:23:53 [notice] 9#9: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2024/06/08 03:23:53 [notice] 9#9: OS: Linux 5.15.0-106-generic
2024/06/08 03:23:53 [notice] 9#9: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/06/08 03:23:53 [notice] 10#10: start worker processes
2024/06/08 03:23:53 [notice] 10#10: start worker process 11
2024/06/08 03:23:53 [notice] 10#10: start worker process 12

然后我們從另外一個(gè)shell中去查看當(dāng)前ip的80端口的信息:

test@VM-24-7-ubuntu:~$ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a  rel="external nofollow" >nginx.org</a>.<br/>
Commercial support is available at
<a  rel="external nofollow" >nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

此時(shí)就會(huì)發(fā)現(xiàn),當(dāng)前的服務(wù)上已經(jīng)部署成功了,使用網(wǎng)頁(yè)進(jìn)行訪問(wèn)也是如此,并且還和前面的網(wǎng)頁(yè)不一樣,更說(shuō)明了這是在容器中運(yùn)行的:

在這里插入圖片描述

斷開(kāi)服務(wù),再進(jìn)行訪問(wèn),就會(huì)發(fā)現(xiàn)異樣:

test@VM-24-7-ubuntu:~/wechat$ curl 127.0.0.1
curl: (7) Failed to connect to 127.0.0.1 port 80 after 0 ms: Connection refused

其他方式拉取nginx鏡像信息

拉取某個(gè)組織或者用戶定制的鏡像:

docker pull xxx/nginx:1.23.4

通過(guò) DIGEST 拉取鏡像

首先要明確一個(gè)概念,為什么要有DIGEST?它和版本號(hào)有什么區(qū)別?

DIGEST 不僅僅是版本號(hào)那么簡(jiǎn)單,它是對(duì)鏡像內(nèi)容的直接反映。想象一下,即使兩個(gè) app 版本號(hào)相同,但如果編譯時(shí)所依賴的庫(kù)文件或代碼有細(xì)微差異,它們的實(shí)際二進(jìn)制內(nèi)容就會(huì)不同。DIGEST 就像是對(duì)這個(gè)最終打包產(chǎn)物的“指紋”,哪怕是最微小的改動(dòng),都會(huì)導(dǎo)致 DIGEST 發(fā)生變化。

所以,通過(guò) DIGEST 拉取鏡像,不僅僅是在選擇不同的“版本號(hào)”,而是確保你獲取到的鏡像與你期望的鏡像內(nèi)容完全一致,哪怕是同一個(gè)標(biāo)簽下的鏡像有了更新也不例外。

所以我們嘗試?yán)∫粋€(gè)DIGEST:

在這里插入圖片描述

root@VM-24-7-ubuntu:~# docker pull nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa
docker.io/library/nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa: Pulling from library/nginx
3f9582a2cbe7: Pull complete 
1c3cdc1adeef: Pull complete 
0d20c7b11e51: Pull complete 
2f98bdf28b77: Pull complete 
90f8f705fe4d: Pull complete 
66350be01a8b: Pull complete 
Digest: sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa
Status: Downloaded newer image for nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa
docker.io/library/nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa

此時(shí)查看本地鏡像:

root@VM-24-7-ubuntu:~# docker images
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
nginx                         latest    4f67c83422ec   9 days ago      188MB
hello-world                   latest    d2c94e258dcb   13 months ago   13.3kB
myregistry.com/myhelloworld   latest    d2c94e258dcb   13 months ago   13.3kB
nginx                         1.23.3    ac232364af84   14 months ago   142MB
nginx                         <none>    8c9eabeac475   15 months ago   142MB

就會(huì)有不同版本的nginx了

到此這篇關(guān)于Docker搭建一個(gè)nginx服務(wù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker搭建nginx服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker 拉取鏡像及標(biāo)簽操作 pull | tag

    Docker 拉取鏡像及標(biāo)簽操作 pull | tag

    這篇文章主要介紹了Docker 拉取鏡像及標(biāo)簽操作 pull | tag,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Docker創(chuàng)建tomcat容器實(shí)例后無(wú)法訪問(wèn)(HTTP狀態(tài)404)

    Docker創(chuàng)建tomcat容器實(shí)例后無(wú)法訪問(wèn)(HTTP狀態(tài)404)

    本文主要介紹了Docker創(chuàng)建tomcat容器實(shí)例后無(wú)法訪問(wèn),HTTP狀態(tài)顯示404,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Docker 鏡像和容器的區(qū)別詳解

    Docker 鏡像和容器的區(qū)別詳解

    這篇文章主要介紹了Docker 鏡像和容器的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 關(guān)于如何使用docker部署centos系統(tǒng)測(cè)試環(huán)境

    關(guān)于如何使用docker部署centos系統(tǒng)測(cè)試環(huán)境

    這篇文章主要介紹了關(guān)于如何使用docker部署centos系統(tǒng)測(cè)試環(huán)境,Docker屬于操作系統(tǒng)虛擬化技術(shù),本文圖文講解部署過(guò)程,需要的朋友可以參考下
    2023-03-03
  • 總結(jié)Docker不適合部署數(shù)據(jù)庫(kù)的7大原因

    總結(jié)Docker不適合部署數(shù)據(jù)庫(kù)的7大原因

    在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫(kù)的7大原因,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-01-01
  • Docker?容器連接的具體實(shí)現(xiàn)

    Docker?容器連接的具體實(shí)現(xiàn)

    本文主要介紹了Docker?容器連接的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 淺談docker Dockerfile 指令 VOLUME 介紹

    淺談docker Dockerfile 指令 VOLUME 介紹

    本篇文章主要介紹了淺談docker Dockerfile 指令 VOLUME 介紹 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Docker?日志管理的實(shí)現(xiàn)示例

    Docker?日志管理的實(shí)現(xiàn)示例

    Docker提供了多種日志驅(qū)動(dòng)來(lái)管理和提取容器日志,包括json-file、syslog、fluentd等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 關(guān)于docker部署的jenkins跑git上的程序的問(wèn)題

    關(guān)于docker部署的jenkins跑git上的程序的問(wèn)題

    這篇文章主要介紹了docker部署的jenkins跑git上的程序的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • docker logs-查看docker容器日志的實(shí)現(xiàn)

    docker logs-查看docker容器日志的實(shí)現(xiàn)

    這篇文章主要介紹了docker logs-查看docker容器日志的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論