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

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

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

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

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

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

Web服務(wù)器

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

在這里插入圖片描述

反向代理服務(wù)器

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

高性能特點(diǎn)

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

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

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

安裝nginx

apt install nginx -y

啟動nginx

使用

nginx

就能啟動nginx,此時訪問一下nginx:

在這里插入圖片描述

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

停止nginx

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

查找nginx鏡像

docker search nginx

拉取nginx鏡像,啟動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

此時本地就會有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)行鏡像之后,此時就會進(jìn)入到容器中進(jìn)行運(yùn)行,比如:

在這里插入圖片描述

此時我們檢查一下操作系統(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/"

就會發(fā)現(xiàn),此時的版本不是Ubuntu,我們再開一個新的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,說明我們的Docker服務(wù)已經(jīng)運(yùn)行成功了,此時已經(jīng)進(jìn)入到了容器的shell當(dāng)中

我們在容器shell中啟動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

然后我們從另外一個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>

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

在這里插入圖片描述

斷開服務(wù),再進(jìn)行訪問,就會發(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鏡像信息

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

docker pull xxx/nginx:1.23.4

通過 DIGEST 拉取鏡像

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

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

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

所以我們嘗試?yán)∫粋€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

此時查看本地鏡像:

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

就會有不同版本的nginx了

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    淺談docker Dockerfile 指令 VOLUME 介紹

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

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

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

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

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

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

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

最新評論