想在容器中部署靜態(tài)頁(yè)面需要做一些準(zhǔn)備工作,正常的網(wǎng)頁(yè)服務(wù)運(yùn)行都是通過(guò)80端口進(jìn)行訪問(wèn)。
本節(jié)內(nèi)容:設(shè)置容器的端口映射,開(kāi)啟80端口、在容器中部署Nginx服務(wù),訪問(wèn)測(cè)試、關(guān)閉容器重啟docker和Nginx服務(wù)。
設(shè)置容器的端口映射,開(kāi)啟80端口:
? ? 通過(guò)docker run [-P] [-p]命令可以開(kāi)啟端口映射。
? ? ? ? -P --publish-all=true|false 默認(rèn)為false? ? ? ? 暴露容器的所有端口。
? ? ? ? -p --publish=[]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?暴露容器的部分端口,需指端口號(hào)。
? ? 例如{ docker run --name=test -P -i -t ubuntu /bin/bash } 啟動(dòng)一個(gè) 暴露所有端口的 的容器。
? ? 例如{ docker run --name=test -p 80 -i -t ubuntu /bin/bash } 啟動(dòng)一個(gè) 暴露80端口的 的容器。
? ? 例如{ docker run --name=test -P 8080:80 -i -t ubuntu /bin/bash } 啟動(dòng)一個(gè) 暴露80端口的 的容器,并且將容器80端口映射到宿主機(jī)8080端口。
? ? 例如{ docker run --name=test -P -i 0.0.0.0:80 -t ubuntu /bin/bash } 啟動(dòng)一個(gè) 指定IP,暴露80端口 的容器。
? ? 例如{ docker run --name=test -P -i 0.0.0.0:8080:80 -t ubuntu /bin/bash } 啟動(dòng)一個(gè) 指定IP,暴露80端口 的容器,并且將容器80端口映射到宿主機(jī)的8080端口。
在容器中部署Nginx服務(wù),訪問(wèn)測(cè)試:
? ??1.創(chuàng)建映射80端口的交互式容器:
? ? ? ? 使用{ docker run --name=web -p 80 -i -t ubuntu /bin/bash }命令創(chuàng)建。
????2.安裝Nginx:
? ? ? ? { apt-get update }
? ? ? ? { apt-get upgrade }
? ? ? ? { apt-get install -y nginx }
????3.安裝文本編輯器Vim:
? ? ? ? { apt-get install vim }
????4.創(chuàng)建一個(gè)靜態(tài)頁(yè)面:?
?????????{ mkdir -p /var/www/html } 創(chuàng)建一個(gè)存放靜態(tài)頁(yè)面的文件夾。?
?????????{ cd /var/www/html } 進(jìn)入到創(chuàng)建的文件夾中。?
?????????{ vim index.html } 使用vim創(chuàng)建一個(gè)index.html文件。?
?????????隨便寫(xiě)一點(diǎn)HTML代碼
? ? ????????<html>
? ? ? ? ? ? ????<head>
? ? ? ? ? ? ? ? ????<title>Test Page</title>
? ? ? ? ? ? ????</head>
? ? ? ? ? ? ????<body>
? ? ? ? ? ? ? ? ????<h1> Just Test. </h1>
????????????????</body>
????????????</html>
????????保存,退出。
????5.修改Nginx配置文件:
? ? ? ? { whereis nginx } 查找一個(gè)nginx的安裝目錄。
? ? ? ? { ls /etc/nginx/sites-enabled } 查看nginx的配置文件位置。
? ? ? ? { vim default } 打開(kāi)配置文件進(jìn)行編輯,更改root的路徑為剛才創(chuàng)建的文件夾路徑。

????6.運(yùn)行Nginx:
? ? ? ? { nginx } 啟動(dòng)nginx服務(wù)。
? ? ? ? { ps -ef } 查看容器中運(yùn)行的進(jìn)程,確保nginx服務(wù)已經(jīng)開(kāi)啟。
? ? ? ? 使用ctrl+P和ctrl+Q將容器設(shè)置為后臺(tái)運(yùn)行。
? ? ? ? { docker ps } 可以看到正在運(yùn)行的容器列表。

? ? ? ? { docker port web } 可以看到web容器中的端口映射情況。

? ? ? ? { docker top web } 可以看到web容器中進(jìn)程的運(yùn)行情況。

????7.測(cè)試網(wǎng)站訪問(wèn):
? ? ? ?7.1 { curl http://127.0.0.1:32769 } 命令可以看到之前寫(xiě)的HTML代碼,此時(shí)在容器中部署Nginx服務(wù)正常運(yùn)行。

? ? ? ? 7.2 也可以在瀏覽器中訪問(wèn),可以看到頁(yè)面正常顯示。
? ? ? ? 7.3 同時(shí)也可以使用容器的IP地址進(jìn)行訪問(wèn)。
? ? ? ? ? ? { docker inspect web } 查看web容器的具體信息。

? ? ? ? ? ? { curl http://172.17.0.2 } 此時(shí)就可以訪問(wèn)到了,不需要端口號(hào),因?yàn)槟J(rèn)是80端口。
????????7.4 也可以在瀏覽器中訪問(wèn)http://172.17.0.2,可以看到頁(yè)面正常顯示。
關(guān)閉容器重啟docker和Nginx服務(wù):
????使用{ docker stop web } 關(guān)閉容器。
? ? 使用{ docker start -i web} 再次開(kāi)啟容器。
? ? 在容器中使用 { ps -ef } 命令查看當(dāng)前開(kāi)啟的進(jìn)程,發(fā)現(xiàn)nginx服務(wù)并沒(méi)有啟動(dòng)。
? ? 使用ctrl+P和ctrl+Q將容器設(shè)置為后臺(tái)運(yùn)行。
????使用{ docker exec web nginx } 啟動(dòng)nginx服務(wù)。
? ? 使用{ docker top web } 可以看到nginx服務(wù)已經(jīng)啟動(dòng),此時(shí)可以用 http://172.17.0.2 或者 http://127.0.0.1:32769 可能不會(huì)再次訪問(wèn)到靜態(tài)頁(yè)面。
? ? 原因是IP地址可能改變,映射端口也可能改變,可以使用{ docker inspect web }命令再次查看IP地址和映射端口。
? ? 也就是說(shuō)當(dāng)容器停止后重啟時(shí),容器的IP地址和端口映射都會(huì)發(fā)生改變。