docker+nginx 安裝部署修改資源目錄配置文件和容器埠信息

来源:https://www.cnblogs.com/jimojianghu/archive/2022/11/10/15932500.html
-Advertisement-
Play Games

查看docker鏡像 可以先查看docker下是否存在nginx鏡像,使用如下這些命令查看: docker images: 列出所有鏡像。 docker images nginx: 列出所有nginx鏡像,不同版本等等。 docker search nginx: 搜索查看所有nginx鏡像信息。 拉 ...


查看docker鏡像

可以先查看docker下是否存在nginx鏡像,使用如下這些命令查看:

  • docker images: 列出所有鏡像。
  • docker images nginx: 列出所有nginx鏡像,不同版本等等。
  • docker search nginx: 搜索查看所有nginx鏡像信息。

拉取安裝nginx鏡像

使用 pull 命令拉取nginx鏡像:

docker pull nginx

出現以下內容,等待下載完成即可:

image

運行nginx

下載完成nginx鏡像後,就可以啟動運行nginx了,使用如下命令:

docker run -d --name nginx -p 8080:80 nginx

部分說明如下:

  • -d 後臺持續運行運行。
  • --name 自定義的容器名稱。
  • -p 映射主機埠號到docker容器的埠號。
    這裡埠8008即為外部web訪問的埠號,而80則為nginx容器對外暴露的埠號。

啟動成功,就可以通過 ip:8008 訪問站點。

image

以上即是 docker 安裝啟動 nginx 容器服務成功。

非常簡單的處理,接下來我們要做的事情,是如何處理nginx的配置、日誌、靜態資源等等內容,這些就相對複雜了。有多種方式可以處理配置資源文件等,下麵將詳細介紹。

映射到本地目錄

查看nginx容器的配置資源目錄

  1. 進入容器,可以執行命令
docker exec -it container-id/container-name bash
docker exec -it container-id/container-name /bin/bash
// -i: 以交互模式運行
// -t: 為容器重新分配一個偽輸入終端
// -i 與 -t 通常同時使用
// container-id     容器id
// container-name   自定義容器名稱
// bash (/bin/bash) linux 命令,啟動一個bash終端,可與用戶交互
  1. 進入容器bash終端後,可以查看到nginx相關內容的目錄位置如下:

log 日誌文件目錄:/var/log/nginx
config 配置文件目錄: /etc/nginx
web 資源存放目錄: /usr/share/nginx/html

註意,這時候可以查看對應的文件信息,但這裡不能使用vi查看文件內容,因為是新的終端命令環境,vi無法使用。
可以使用 cat 命令, 如:

cat nginx.conf

此外,使用 exit 命令可以退出容器當前終端命令環境。

映射nginx目錄

將nginx容器的配置日誌資源等目錄映射到本地主機目錄下,需要在啟動容器時,使用到 -v 命令,如:

docker run -d --name nginx \
-p 8080:80 \
-v /usr/nginx/html:/usr/share/nginx/html \
-v /usr/nginx/log:/var/log/nginx \
-v /usr/nginx/nginx.conf:/etc/nginx/nginx.conf \
nginx

其中 -v 是目錄掛載,將本地目錄映射到容器目錄,後面直接修改本地目錄下的內容,會同步到容器內。
上面的命令,掛載了nginx的資源文件目錄、日誌目錄、配置文件。
這時候如果查看配置文件nginx.conf,可以發現,有這麼一段:

include /etc/nginx/conf.d/*.conf;

這是由於nginx容器除了載入主配置文件nginx.conf以外,還載入了conf.d目錄下的子配置文件,通常最少有一個default.conf。所以,在啟動容器時,也可以把該目錄掛載出來:

-v /usr/nginx/conf.d:/etc/nginx/conf.d

也可以只使用nginx.conf,修改下配置,不使用conf.d的子配置,但docker容器預設的是使用自配置。

在掛載了內容資源後,就可以將靜態web文件上傳到對應的主機目錄。
也可以直接在主機目錄修改配置文件,然後重新啟動nginx,就能生效。

docker stop nginx
docker start nginx

拷貝容器資源

另外一種更改配置資源內容的方式,是使用 docker cp 命令。

docker cp :用於容器與主機之間的數據拷貝

通過該命令,就可以拷貝本地內容到容器裡面去,如下麵命令就可以將html文件拷貝到nginx容器的靜態資源目錄:

docker cp /usr/nginx/html/mian.html nginx:/usr/share/nginx/html

也可以拷貝配置文件:

// 從容器拷貝到本地目錄
docker cp nginx:/etc/nginx/nginx.conf /usr/nginx/nginx.conf
// 從本地目錄拷貝到容器
docker cp /usr/nginx/nginx.conf nginx:/etc/nginx/nginx.conf

通過拷貝的方式,可以變更靜態資源文件,修改配置文件,查看log日誌等等。

埠問題

註意:
在通過 docker run 命令啟動nginx的時候,通過 -p 設置了埠,預設選擇的nginx容器的埠號是80。
如果通過配置文件修改了nginx容器的埠號,如把 server 80 改成 server 8080,在重啟nginx容器,此時,nginx服務會失效,無法有效訪問站點。
即非80埠的容器,無法訪問。

如果要部署多個網站,可以啟動多個容器,每個容器可以對應一個埠號。這時,可以修改每個容器的日誌配置資源文件等內容。

修改運行中的容器的埠的方法

  • 停止 nginx 容器的運行,docker stop nginx

  • 查看 nginx 容器的id,docker inspect nginx | grep "Id", 會顯示完整的容器Id

  • 通用路徑 /var/lib/docker/containers/{容器Id}/hostconfig.json,裡面就存放有容器埠和本地埠,可以進行修改,通過 vi 命令查看、修改:
    image
    80/tcp 是容器埠,HostPort: 8005 是本地埠,可修改。

  • 重啟docker, systemctl restart docker

  • 重啟nginx容器, docker start nginx


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • dispatch_sync執行了兩件事:把代碼塊放入指定線程的任務隊列中、堵塞當前線程直到代碼塊執行結束,如果出現了堵塞的線程和代碼塊所在的線程為同一線程的話,這個時候代碼無法在此線程執行繼續下去,即造成了死鎖。 - (void)viewDidLoad { [super viewDidLoad]; ...
  • 隨著元宇宙的興起,3D虛擬現實廣泛引用,讓數字化信息和現實世界融合,目前大家的目光主要聚焦於視覺交互層面,為了在虛擬環境中更好的再現真實世界的三維空間體驗,引入聽覺層面必不可少,空間音頻孕育而生。 空間音頻是一種音頻體驗,會讓用戶更容易體驗到聲音的立體感和深度,將環繞聲更準確地定位在合適的方位,讓用 ...
  • 好家伙, 本篇內容為《JS高級程式設計》第三章學習筆記 1.數據類型 ECMAScript有6種簡單數據類型(稱為原始類型): Undefined, Null, Boolean, Number, String和Symbol。 Symbol (符號)是ECMAScript6新增的。還有一種複雜數據類型 ...
  • Ant Design Pro V5 訪問signalR : connection.start 沒反應, network顯示待處理, 原來是代理沒設置好,需要配置成支持websocket,配置如下圖所示。 ...
  • vue vue簡介 Vue (發音為 /vjuː/,類似 view) 是一款用於構建用戶界面的 JavaScript 框架。它基於標準 HTML、CSS 和 JavaScript 構建,並提供了一套聲明式的、組件化的編程模型,幫助你高效地開發用戶界面。無論是簡單還是複雜的界面,Vue 都可以勝任。 ...
  • 一.TS介紹 1.1 簡介 ts是2012年由微軟開發,在js的基礎上添加了類型支持 1.2 優劣勢 優勢 :任何位置都有代碼提示,增加效率;類型系統重構更容易;使用最新的ECMAscript語法 劣勢:和有些庫的結合併不是很完美;學習需要成本需要理解介面、泛型、類型等知識 1.3 與js區別 首先 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 0 目標 使用 uniapp + TypeScript 為基礎棧進行小程式開發 uniapp 是一個使用 Vue.js 開發所有前端應用的框架,開發者編寫一套代碼,可發佈到iOS、Android、H5、以及各種小程式(微信/支付寶/百度/ ...
  • 上文已經搭建了 pnpm + monorepo 的基礎環境,本文對 workspace-root 進行初始化配置,包括:通用配置文件、公共依賴、ESLint。 1 通用配置文件 在項目 根目錄 下添加下麵的配置文件。 添加 .editorconfig 編輯器格式配置文件 [*.{js,cjs,ts, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...