在本教程中,您將學(xué)習(xí)如何將 Nginx 作為 Docker 容器運(yùn)行,并將其公開給您的本地網(wǎng)絡(luò)。此外,您將學(xué)習(xí)如何創(chuàng)建 Docker 數(shù)據(jù)卷以在容器和主機(jī)文件系統(tǒng)之間共享信息。
Nginx 是一種流行的開源軟件,用于 Web 服務(wù)、反向代理、緩存、負(fù)載平衡等。它非常流行并在當(dāng)今許多高流量網(wǎng)站上使用。Docker 最常見的工作負(fù)載之一是使用它來(lái)容器化 Web 服務(wù)器。我們將向您展示如何使用 Nginx 進(jìn)行設(shè)置。因此,讓我們帶您完成整個(gè)過(guò)程。
Docker 是一個(gè)容器化平臺(tái),用于將您的應(yīng)用程序打包成一個(gè)易于管理的容器映像。
先決條件
您必須滿足以下要求才能完成本教程:
Docker 應(yīng)該已安裝并在您的系統(tǒng)上本地運(yùn)行。
您需要一個(gè) root 帳戶,或者用戶可以運(yùn)行 sudo 命令。
在 Docker 中設(shè)置 Nginx
拉取鏡像
首先,我們將拉取官方的 Nginx 鏡像。在您的 docker 主機(jī)上,在終端上運(yùn)行以下 Docker pull 命令以從 Docker hub下載 Nginx最新鏡像。
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker pull nginx
輸出如下:
Using default tag: latest latest: Pulling from library/nginx e1acddbe380c: Pull complete e21006f71c6f: Pull complete f3341cc17e58: Pull complete 2a53fa598ee2: Pull complete 12455f71a9b5: Pull complete b86f2ba62d17: Pull complete Digest: sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
運(yùn)行 Nginx Docker 容器
現(xiàn)在,我們已準(zhǔn)備好運(yùn)行 Nginx Docker 容器并將其端口公開給您的本地網(wǎng)絡(luò)。為此,我們使用以下命令運(yùn)行鏡像:
linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 --name my-nginx-server nginx
輸出如下:
f204ea685629dbc1d09b4a2d5f6fb64f5ef84be7d58a1b7449cc144c65c90c92 docker: Error response from daemon: driver failed programming external connectivity on endpoint my-nginx-server (27d91a249b151ea87841c46775647d7af43d12c3e753061531173f05016e485b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
-d– 以分離模式啟動(dòng)容器(容器在后臺(tái)運(yùn)行)。
-p– 將一個(gè)端口從容器綁定到主機(jī)(將主機(jī)流量端口 80 路由到容器端口 80)。
-name– 我們的 Docker 容器的名稱。
最后一個(gè)參數(shù)“nginx”告訴 Docker 容器使用哪個(gè)鏡像。
現(xiàn)在打開瀏覽器訪問(wèn)http://localhost,您應(yīng)該會(huì)看到一個(gè) Nginx Web 服務(wù)器提供其默認(rèn)網(wǎng)頁(yè)。
就是這樣。你有一個(gè) NGINX 的工作實(shí)例,通過(guò) Docker 容器。
列出 Docker 容器
要列出所有正在運(yùn)行的Docker 容器,請(qǐng)執(zhí)行以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -all
根據(jù)上面的輸出,我們可以使用以下兩種方法的其中一種停止我們的 Nginx Docker 容器:
linuxmi@linuxmi:~/www.linuxmi.com$ docker stop f204ea685629 f204ea685629 linuxmi@linuxmi:~/www.linuxmi.com$ docker stop my-nginx-server my-nginx-server
要查看所有容器,甚至那些未運(yùn)行的容器,您需要添加-a標(biāo)志。
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -a
在 Nginx Docker 容器和主機(jī)之間共享數(shù)據(jù)
Docker 容器是短暫的。默認(rèn)情況下,在容器內(nèi)創(chuàng)建的任何數(shù)據(jù)僅在容器內(nèi)且僅在容器運(yùn)行時(shí)可用。
因此,讓我們向您展示如何在主機(jī)上訪問(wèn)容器內(nèi)部的數(shù)據(jù)。我們的目標(biāo)是創(chuàng)建一個(gè)簡(jiǎn)單的 HTML 文件,將其托管在容器中,并使用 Nginx Docker 容器將其提供給外部。此設(shè)置允許我們擁有在容器外部托管的持久網(wǎng)站內(nèi)容。
為了實(shí)現(xiàn)這個(gè)功能,我們將使用Docker 中的綁定掛載功能。使用綁定掛載時(shí),主機(jī)上的文件或目錄會(huì)掛載到容器中。
因此,讓我們首先在主目錄中為您的網(wǎng)站內(nèi)容創(chuàng)建一個(gè)新目錄。
linuxmi@linuxmi:~/www.linuxmi.com$ mkdir ~/www
現(xiàn)在讓我們創(chuàng)建一個(gè)簡(jiǎn)單的 HTML 文件并在您的索引頁(yè)面上放置一些文本。
linuxmi@linuxmi:~/www.linuxmi.com$ vim ~/www/index.html
編寫HTML代碼片段到里面。保存文件并退出 Vim。
接下來(lái),我們將在容器上運(yùn)行帶有附加卷的 Nginx Docker 容器/usr/share/nginx/html到當(dāng)前保存文件的主機(jī)www目錄上index.html。
linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 -v ~/www:/usr/share/nginx/html/ --name my-nginx-server nginx
Nginx 容器默認(rèn)設(shè)置為在/usr/share/nginx/html/.在上面的命令中,該-v選項(xiàng)設(shè)置了一個(gè)綁定掛載卷,它將 Nginx Docker 容器內(nèi)部的目錄鏈接到主機(jī)上的目錄。/usr/share/nginx/html/~/www
Docker 使用 a:將主機(jī)路徑與容器路徑分開。主機(jī)路徑始終排在第一位。
現(xiàn)在,如果您瀏覽http://localhost,您將在顯示窗口上看到下面給出的輸出。
就這樣。您現(xiàn)在有一個(gè)正在運(yùn)行的 Nginx Docker 容器,它為自定義網(wǎng)頁(yè)提供服務(wù)。
結(jié)論
Nginx 和 Docker 可以很好地協(xié)同工作。在本教程中,我們演示了如何設(shè)置和使用 Nginx Docker 容器?,F(xiàn)在,您還知道如何在容器和主機(jī)文件系統(tǒng)之間共享信息。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208717 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85081 -
容器
+關(guān)注
關(guān)注
0文章
492瀏覽量
22027 -
nginx
+關(guān)注
關(guān)注
0文章
142瀏覽量
12154 -
Docker
+關(guān)注
關(guān)注
0文章
453瀏覽量
11792
原文標(biāo)題:如何在 Docker 容器中運(yùn)行 Nginx
文章出處:【微信號(hào):Linux迷,微信公眾號(hào):Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論