操作系統上的Docker安裝指南:解鎖容器化新世界

摘要:本文詳細介紹了Docker在不同操作系統上的安裝方法。主要內容包括:Windows系統通過Docker Desktop安裝,需啟用Hyper-V和WSL2;Mac系統同樣使用Docker Desktop,根據芯片類型選擇版本;Linux系統以Ubuntu為例,通過命令行完成安裝。安裝后建議配置鏡像加速器優化下載速度,并合理分配CPU、內存等資源。文章還提供了常見問題的解決方案,如依賴缺失、網絡問題和權限不足等。Docker作為容器化技術的代表,能實現"一次構建,到處運行",極大提升開發運維效率,是數字化轉型的重要工具。

目錄

一、Docker:容器化世界的大門

二、Windows 系統安裝 Docker

(一)準備工作

(二)下載 Docker Desktop

(三)安裝 Docker Desktop

(四)配置 Docker Desktop

(五)驗證安裝

三、Mac 系統安裝 Docker

(一)下載 Docker Desktop

(二)安裝 Docker Desktop

(三)啟動 Docker Desktop

(四)驗證安裝

(五)配置 Docker

四、Linux 系統安裝 Docker(以 Ubuntu 為例)

(一)更新系統軟件包

(二)安裝依賴包

(三)添加 Docker 官方 GPG 密鑰

(四)添加 Docker 的 APT 軟件源

(五)更新 apt 包索引并安裝 Docker Engine

(六)啟動并設置開機自啟

(七)驗證安裝

五、安裝后的配置與優化

(一)配置鏡像加速

(二)資源分配調整

(三)Docker Compose 安裝與使用(可選)

六、常見問題及解決方法

(一)安裝過程中的錯誤提示及解決

(二)運行時遇到的問題及排查思路

七、總結與展望


一、Docker:容器化世界的大門

在當今數字化的時代,軟件開發和運維的節奏不斷加快,對效率和靈活性的要求也越來越高。Docker,作為容器化技術的佼佼者,應運而生,為開發者和運維人員打開了一扇通往高效、便捷的新世界大門。

Docker 就像是一個神奇的 “集裝箱”,它可以將應用程序及其所有依賴項,如代碼、運行時、系統工具、庫等,打包成一個獨立的、可移植的容器。這個容器就像一個 “自給自足” 的小世界,無論在開發環境、測試環境還是生產環境,都能保持一致的運行狀態,真正實現了 “一次構建,到處運行” 的夢想。

對于開發者來說,Docker 大大簡化了開發環境的搭建過程。以往,為了讓應用程序在不同的開發機器上正常運行,可能需要花費大量的時間和精力去配置各種依賴項,而且還經常會遇到 “在我的機器上能運行,在別人的機器上就不行” 的尷尬情況。有了 Docker,這些問題都迎刃而解。開發者只需要在本地創建一個包含所有依賴的 Docker 容器,就可以確保開發環境與生產環境的高度一致,減少了因環境差異導致的各種問題,提高了開發效率和團隊協作的順暢度。

在運維領域,Docker 的優勢更是顯著。它的輕量級特性使得多個容器可以在同一臺主機上高效運行,大大提高了資源利用率。同時,Docker 的快速部署和擴展能力,讓運維人員可以在短時間內快速啟動或停止容器,根據業務需求靈活調整資源分配,輕松應對高并發和流量高峰。此外,Docker 還與持續集成 / 持續部署(CI/CD)流程完美融合,實現了自動化的構建、測試和部署,極大地縮短了軟件的發布周期,提高了軟件的質量和穩定性。

無論是開發微服務架構的應用程序,還是進行大規模的云計算部署;無論是初創企業追求快速迭代,還是大型企業需要高效的運維管理,Docker 都已經成為了不可或缺的關鍵技術。它正以其強大的功能和獨特的魅力,改變著軟件開發和運維的方式,引領著行業的發展潮流。

接下來,就讓我們一起深入探索在不同操作系統上安裝 Docker 的方法,開啟我們的 Docker 之旅吧!

二、Windows 系統安裝 Docker

在 Windows 系統上安裝 Docker,能讓你在熟悉的 Windows 環境中體驗 Docker 強大的容器化技術,為開發和運維工作帶來極大的便利。接下來,我們就一步步詳細介紹在 Windows 系統中安裝 Docker 的方法。

(一)準備工作

  • 系統要求
    • 操作系統:需要 Windows 10 64 位的專業版、企業版或教育版(版本號 1903 及以上),或者 Windows 11 64 位系統 。若使用 Windows Server,版本需為 2016 及更高。
    • 硬件配置:確保計算機配備 64 位處理器,且支持虛擬化技術,如 Intel VT-x 或 AMD-V;內存方面,至少 4GB,推薦 8GB 及以上,以保證多個容器同時運行時系統的流暢性;磁盤空間也需充足,以存儲 Docker 鏡像和容器,建議使用 SSD 磁盤,提升讀寫速度。
  • 啟用 Hyper-V 和 WSL 2
    • Hyper-V:這是 Windows 系統自帶的虛擬化平臺,Docker 依賴它來運行容器。啟用方式如下:
      • 圖形界面:打開 “控制面板”,找到 “程序和功能”,點擊 “啟用或關閉 Windows 功能”,在彈出的窗口中勾選 “Hyper-V”,點擊 “確定” 后,系統會提示重啟,重啟后 Hyper-V 即可生效。
      • PowerShell 命令:以管理員身份打開 PowerShell,運行命令Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All ,同樣,執行完后需重啟計算機。
    • WSL 2(Windows Subsystem for Linux 2):這是 Windows 上運行 Linux 二進制可執行文件(ELF 格式)的兼容層,能提供更高效的性能和更好的兼容性。啟用步驟如下:
      • 以管理員身份打開 PowerShell,運行wsl --install命令,該命令會自動安裝 WSL 2 所需的組件,并下載默認的 Linux 發行版(如 Ubuntu)。
      • 若已安裝 WSL 1,可通過wsl --set-default-version 2命令將其升級到 WSL 2。
      • 下載并安裝 WSL 2 Linux 內核更新包,可從微軟官網獲取,安裝完成后,WSL 2 即可正常工作。

(二)下載 Docker Desktop

  • 官方下載鏈接:訪問 Docker 官方網站的下載頁面https://www.docker.com/products/docker-desktop ,點擊 “Download for Windows” 按鈕,即可開始下載適用于 Windows 的 Docker Desktop 安裝程序。
  • 下載步驟和注意事項
    • 在下載前,確保網絡連接穩定,以免下載過程中斷。
    • 下載的安裝程序文件名為 “Docker Desktop Installer.exe”,文件大小可能會因版本不同而有所差異,一般在幾百 MB 左右。
    • 若下載速度較慢,可以嘗試更換網絡環境,或者使用下載工具進行下載。

(三)安裝 Docker Desktop

  • 運行安裝程序:下載完成后,雙擊 “Docker Desktop Installer.exe” 文件,啟動安裝向導。安裝向導會提示你一些許可協議等信息,仔細閱讀后,勾選 “我接受許可協議中的條款”,然后點擊 “安裝” 按鈕。
  • 選擇安裝選項:在安裝過程中,你可以選擇安裝路徑等選項。如果沒有特殊需求,保持默認設置即可。默認情況下,Docker Desktop 會安裝到 “C:\Program Files\Docker\Docker” 目錄下
  • 等待安裝完成及重啟計算機:安裝過程可能需要一些時間,根據計算機性能不同,大約需要幾分鐘到十幾分鐘不等。安裝完成后,系統會提示你重啟計算機,點擊 “是”,重啟計算機使安裝生效。

(四)配置 Docker Desktop

  • 打開 Docker Desktop 設置:重啟計算機后,在開始菜單中找到 “Docker Desktop” 并打開。第一次打開時,可能會出現歡迎界面,點擊 “接受” 接受服務條款。然后,在系統托盤區找到 Docker 圖標,右鍵點擊它,選擇 “Settings”,即可打開 Docker Desktop 的設置頁面。
  • 配置內存、CPU、磁盤空間、網絡及代理等選項
    • 內存和 CPU:在 “Resources” 選項卡下的 “Advanced” 子選項卡中,可以根據實際需求調整分配給 Docker 的內存和 CPU 核心數。例如,如果計算機內存為 16GB,且同時運行多個容器,可以適當分配 4GB - 8GB 內存給 Docker,同時根據 CPU 核心數量,分配 2 - 4 個核心 ,以確保容器能夠穩定運行。
    • 磁盤空間:同樣在 “Resources” 選項卡中,可以設置 Docker 存儲鏡像和容器數據的磁盤位置。如果系統盤空間緊張,可以將其設置到其他大容量磁盤分區,點擊 “Browse” 選擇新的存儲路徑即可。
    • 網絡:在 “Resources” 選項卡的 “Network” 子選項卡中,可以配置 Docker 容器的網絡設置,如 DNS 服務器等。一般情況下,保持默認設置即可滿足大多數需求。
    • 代理:若你的網絡環境需要使用代理服務器,在 “Proxies” 選項卡中,填寫代理服務器的地址和端口信息,點擊 “Apply & Restart” 保存設置并重啟 Docker,使代理配置生效。

(五)驗證安裝

  • 檢查 Docker 版本:打開命令提示符(CMD)或 PowerShell,運行命令docker --version ,如果安裝成功,會顯示 Docker 的版本信息,例如 “Docker version 24.0.2, build cb74dfc” 。
  • 檢查服務狀態:運行命令docker info,該命令會輸出 Docker 的詳細信息,包括容器數量、鏡像數量、存儲驅動、服務器版本等。如果輸出信息正常,沒有報錯,說明 Docker 服務運行正常。
  • 運行測試容器:運行命令docker run hello-world,Docker 會自動從 Docker Hub 下載一個名為 “hello-world” 的測試鏡像,并在容器中運行它。如果看到輸出 “Hello from Docker!” 等類似信息,恭喜你,Docker 在 Windows 系統上安裝成功,你可以開始使用 Docker 來構建、運行和管理容器化應用程序了。

博主也寫了一篇Window10安裝Docker詳細教程,歡迎大家閱讀參考:Windows10安裝Docker Desktop(大媽看了都會)_win10 docker desktop-CSDN博客

本文詳細介紹了如何在Windows10上安裝DockerDesktop,包括為何選擇在Windows上安裝、Docker基本概念、下載與安裝步驟、啟用Hyper-V、解決常見問題,如WSL2安裝不完整和設置默認版本。通過本文,開發者可以快速掌握在Windows環境下使用Docker進行容器化開發的流程。

三、Mac 系統安裝 Docker

在 Mac 系統上安裝 Docker,為開發者提供了一個高效、便捷的容器化開發環境,讓你能夠輕松地構建、測試和部署應用程序。下面,我們就來詳細介紹一下在 Mac 系統中安裝 Docker 的具體步驟。

(一)下載 Docker Desktop

  • 官方下載鏈接:訪問 Docker 官方網站的下載頁面https://www.docker.com/products/docker-desktop ,在這里,你可以看到專為 Mac 系統提供的 Docker Desktop 下載選項。根據你的 Mac 電腦芯片類型(Intel 或 Apple Silicon (M1/M2)),選擇對應的版本進行下載。如果不確定芯片類型,可以點擊蘋果菜單,選擇 “關于本機”,在彈出的窗口中查看 “處理器” 信息來確定。
  • 下載步驟和注意事項:點擊下載按鈕后,瀏覽器會開始下載一個.dmg 格式的安裝文件。下載過程中,請確保網絡連接穩定,以免下載中斷。下載完成后,安裝文件通常會保存在 “下載” 文件夾中,你可以在該文件夾中找到名為 “Docker.dmg” 的文件。

(二)安裝 Docker Desktop

  • 運行安裝程序:找到下載好的 “Docker.dmg” 文件,雙擊打開它。這會彈出一個安裝窗口,顯示 Docker 的圖標和應用程序文件夾的圖標。
  • 將 Docker 圖標拖動到應用程序文件夾:按照安裝窗口的提示,將 Docker 圖標直接拖動到 “應用程序” 文件夾圖標上,系統會自動將 Docker 安裝到應用程序目錄中。這個過程可能需要一些時間,取決于你的系統性能,請耐心等待。

(三)啟動 Docker Desktop

  • 首次啟動授權:安裝完成后,打開 “應用程序” 文件夾,找到 Docker 圖標并雙擊啟動。首次啟動時,系統可能會彈出一個權限請求窗口,要求你輸入 Mac 的管理員密碼進行授權。這是為了確保 Docker 能夠正常訪問系統資源并進行必要的配置,輸入密碼后點擊 “好” 即可。
  • 啟動方法:除了在應用程序文件夾中啟動 Docker 外,你還可以通過 “聚焦搜索”(按下 Command + 空格鍵,輸入 “Docker”,然后回車)來快速啟動 Docker。啟動成功后,你會在菜單欄右上角看到一個 Docker 的鯨魚圖標,表示 Docker 正在運行。

(四)驗證安裝

  • 在終端輸入命令:打開 “終端” 應用程序(可以在 “應用程序” - “實用工具” 中找到,或者通過聚焦搜索打開)。
  • 查看版本號:在終端中輸入命令docker --version ,然后回車。如果安裝成功,終端會顯示 Docker 的版本信息,例如 “Docker version 24.0.2, build cb74dfc” ,這表明 Docker 已經成功安裝在你的 Mac 系統上。

(五)配置 Docker

  • 打開 Docker Desktop 設置:點擊菜單欄中的 Docker 鯨魚圖標,選擇 “Preferences”(首選項),打開 Docker Desktop 的設置窗口。
  • 資源分配:在 “Preferences” 窗口中,選擇 “Resources”(資源)選項卡。在這里,你可以根據自己的需求調整分配給 Docker 的 CPU 核心數和內存大小。例如,如果你的 Mac 配備了 8GB 內存,并且主要用于日常開發工作,那么可以為 Docker 分配 2 - 4GB 內存和 2 - 4 個 CPU 核心,以確保 Docker 容器能夠穩定運行,同時不影響其他應用程序的性能。
  • 網絡設置:同樣在 “Resources” 選項卡中,點擊 “Network”(網絡)子選項卡,你可以對 Docker 容器的網絡進行配置。一般情況下,保持默認設置即可滿足大多數開發需求。如果你需要特定的網絡配置,比如設置代理服務器,可在這里進行相應的設置。
  • Docker 引擎配置:在 “Preferences” 窗口中,選擇 “Docker Engine” 選項卡。這里可以對 Docker 引擎進行一些高級配置,例如修改 Docker 鏡像的存儲位置、添加鏡像加速器等。如果需要使用國內的鏡像加速器來提高鏡像下載速度,可以在 “Registry mirrors”(鏡像加速器)字段中添加加速器地址,如阿里云的鏡像加速器地址(具體地址可在阿里云容器鏡像服務控制臺獲取) ,添加完成后點擊右下角的 “Apply & Restart”(應用并重啟)按鈕,使配置生效。

四、Linux 系統安裝 Docker(以 Ubuntu 為例)

在 Linux 系統中,Ubuntu 憑借其易用性和強大的社區支持,成為眾多開發者的首選。下面,我們就以 Ubuntu 系統為例,詳細介紹 Docker 的安裝過程。

(一)更新系統軟件包

在安裝 Docker 之前,首先要確保系統的軟件包是最新的,這有助于避免安裝過程中可能出現的問題。打開終端,輸入以下命令來更新系統軟件包:

sudo apt updatesudo apt upgrade -y

apt update命令用于更新軟件包索引,它會從軟件源服務器獲取最新的軟件包列表信息,讓系統了解到有哪些軟件包可以更新。而apt upgrade -y命令則會自動下載并安裝系統中所有可更新的軟件包,-y參數表示自動回答 “是”,避免在更新過程中出現交互式詢問,提高更新效率。通過這兩個命令,可以讓系統保持在最新的狀態,為后續安裝 Docker 做好準備。

(二)安裝依賴包

接下來,需要安裝一些必要的依賴包,這些依賴包能夠允許apt使用 HTTPS 來訪問軟件倉庫,從而確保軟件包下載的安全性和可靠性。在終端中執行以下命令:

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
  • apt-transport-https:這個包允許apt通過 HTTPS 協議連接到軟件源服務器,確保數據傳輸的加密和安全,防止在下載軟件包過程中數據被竊取或篡改。
  • ca-certificates:包含了 CA(證書頒發機構)證書,使系統能夠信任通過 HTTPS 連接的服務器證書,驗證軟件源服務器的身份真實性,避免連接到惡意的軟件源。
  • curl:是一個強大的命令行工具,用于從互聯網上下載文件。在這里,它將被用于下載 Docker 的相關文件,如 GPG 密鑰等。
  • software-properties-common:提供了一些常用的軟件源管理工具,方便用戶添加、刪除和管理軟件源,為后續添加 Docker 官方軟件源提供支持。

(三)添加 Docker 官方 GPG 密鑰

為了確保從 Docker 官方軟件源下載的軟件包的完整性和真實性,需要添加 Docker 官方的 GPG(GNU Privacy Guard)密鑰。GPG 密鑰就像是一個數字簽名,用于驗證軟件包是否來自官方且未被篡改。在終端中運行以下命令:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

curl -fsSL https://download.docker.com/linux/ubuntu/gpg這部分命令會從 Docker 官方網站下載 GPG 密鑰文件,-fsSL參數分別表示:

  • -f(--fail):當請求失敗時,不顯示錯誤信息,而是返回一個非零的退出狀態碼,這樣可以使腳本在下載失敗時能夠更好地處理錯誤。
  • -s(--silent):靜默模式,不顯示下載過程中的進度條和其他冗余信息,使終端輸出更加簡潔。
  • -S(--show-error):當啟用靜默模式時,如果下載失敗,仍然顯示錯誤信息,以便用戶了解失敗原因。
  • -L(--location):如果服務器返回 3xx 重定向響應,curl會自動跟隨重定向,確保能夠獲取到正確的密鑰文件。

下載的密鑰文件通過管道符(|)傳遞給gpg命令進行處理。gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg這部分命令將下載的 ASCII 格式的密鑰文件轉換為二進制格式(--dearmor參數),并將其保存到/usr/share/keyrings/docker-archive-keyring.gpg文件中(-o參數指定輸出文件路徑)。這樣,系統就可以使用這個密鑰文件來驗證從 Docker 官方軟件源下載的軟件包的簽名,確保軟件包的安全性。

(四)添加 Docker 的 APT 軟件源

添加 Docker 的 APT 軟件源,讓系統知道從哪里獲取 Docker 的軟件包。在終端中輸入以下命令:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

這條命令做了以下幾件事:

  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] Index of linux/ubuntu/ $(lsb_release -cs) stable":構建一個字符串,用于描述 Docker 軟件源的相關信息。其中:
    • arch=$(dpkg --print-architecture):通過dpkg --print-architecture命令獲取當前系統的架構信息(如amd64等),確保下載的軟件包與系統架構匹配。
    • signed-by=/usr/share/keyrings/docker-archive-keyring.gpg:指定使用前面下載并保存的 GPG 密鑰文件來驗證軟件包的簽名。
    • Index of linux/ubuntu/:這是 Docker 官方軟件源在 Ubuntu 系統上的地址。
    • $(lsb_release -cs):通過lsb_release -cs命令獲取當前 Ubuntu 系統的版本代號(如jammy等),以便下載與系統版本對應的 Docker 軟件包。
    • stable:表示使用穩定版本的 Docker 軟件源。
  • | sudo tee /etc/apt/sources.list.d/docker.list:將前面構建的軟件源信息字符串通過管道符傳遞給tee命令,tee命令會將輸入內容同時輸出到標準輸出和指定的文件(/etc/apt/sources.list.d/docker.list)中,sudo用于獲取管理員權限,確保能夠寫入文件。
  • > /dev/null:將標準輸出重定向到/dev/null,即丟棄輸出信息,使終端更加簡潔,避免不必要的干擾。

(五)更新 apt 包索引并安裝 Docker Engine

添加完 Docker 的軟件源后,需要再次更新apt包索引,使系統能夠識別新添加的 Docker 軟件源中的軟件包。然后,就可以安裝 Docker Engine 了。在終端中執行以下命令:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  • sudo apt update:更新apt包索引,讓系統獲取新添加的 Docker 軟件源中的軟件包信息。
  • sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y:安裝 Docker 相關組件:
    • docker-ce:Docker 社區版(Docker Community Edition),是最常用的 Docker 版本,包含了 Docker 的核心引擎,用于創建、運行和管理容器。
    • docker-ce-cli:Docker 社區版的命令行工具,提供了一系列命令,讓用戶可以方便地與 Docker 引擎進行交互,如創建容器、啟動容器、管理鏡像等。
    • containerd.io:是一個容器運行時,它為 Docker 提供了底層的容器管理功能,負責容器的生命周期管理、鏡像管理等。
    • docker-compose-plugin:Docker Compose 插件,用于定義和運行多容器的 Docker 應用程序。通過一個docker-compose.yml文件,就可以輕松管理多個相互關聯的容器,實現復雜應用的快速部署和管理。

(六)啟動并設置開機自啟

安裝完成后,需要啟動 Docker 服務,并設置為開機自啟,這樣每次系統啟動時,Docker 服務都會自動運行。在終端中輸入以下命令:

sudo systemctl start docker
sudo systemctl enable docker
  • sudo systemctl start docker:使用systemctl命令啟動 Docker 服務,systemctl是一個系統服務管理器,用于管理系統服務的啟動、停止、重啟等操作。
  • sudo systemctl enable docker:將 Docker 服務設置為開機自啟,enable命令會在系統啟動時自動加載并啟動 Docker 服務,確保 Docker 隨時可用。

(七)驗證安裝

最后,通過運行一個簡單的測試命令來驗證 Docker 是否安裝成功。在終端中輸入以下命令:

sudo docker run hello-world

這個命令會從 Docker Hub 上下載一個名為hello-world的測試鏡像,并在容器中運行它。如果安裝成功,你將看到類似以下的輸出:

Hello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

這表明 Docker 已經成功安裝在你的 Ubuntu 系統上,你可以開始使用 Docker 來構建、運行和管理各種容器化應用程序了。

五、安裝后的配置與優化

(一)配置鏡像加速

在國內使用 Docker 時,由于網絡原因,從默認的 Docker Hub 鏡像源拉取鏡像往往速度較慢,甚至可能出現超時等問題。為了提高鏡像下載速度,我們可以配置國內的鏡像加速器。鏡像加速器就像是一個緩存服務器,它會在國內的服務器上緩存常用的 Docker 鏡像,當我們從這些加速器拉取鏡像時,數據傳輸距離更短,速度也就更快。

以阿里云和騰訊云為例,下面介紹在不同系統上配置鏡像加速的方法:

  • Windows 系統
    • 打開 Docker Desktop,點擊系統托盤區的 Docker 圖標,選擇 “Settings”。
    • 在彈出的設置窗口中,選擇 “Docker Engine” 選項卡。
    • 在 “Registry mirrors” 字段中,添加阿里云或騰訊云的鏡像加速器地址(獲取方式:登錄阿里云或騰訊云的容器鏡像服務控制臺,在相關頁面獲取專屬的加速器地址)。例如,阿里云的鏡像加速器地址格式為https://[你的加速器地址].mirror.aliyuncs.com ,騰訊云的鏡像加速器地址格式為https://mirror.ccs.tencentyun.com (需登錄獲取) 。添加后,JSON 配置文件類似如下:
{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"]
}
  • 點擊 “Apply & Restart” 按鈕,Docker 會自動重啟并應用新的鏡像加速器配置。
  • Mac 系統
    • 點擊菜單欄中的 Docker 鯨魚圖標,選擇 “Preferences”。
    • 在 “Preferences” 窗口中,選擇 “Docker Engine” 選項卡。
    • 同樣在 “Registry mirrors” 字段中,添加阿里云或騰訊云的鏡像加速器地址,添加完成后,點擊 “Apply & Restart” 使配置生效。
  • Linux 系統(以 Ubuntu 為例)
    • 創建或編輯 Docker 的配置文件daemon.json ,如果文件不存在,可以使用以下命令創建:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://[你的加速器地址].mirror.aliyuncs.com","https://mirror.ccs.tencentyun.com"]
}
EOF

  • 保存文件后,重啟 Docker 服務使配置生效:
sudo systemctl daemon-reloadsudo systemctl restart docker

配置完成后,可以通過docker info命令查看配置是否生效,在輸出信息中,找到 “Registry Mirrors” 字段,如果顯示了你添加的鏡像加速器地址,說明配置成功。

(二)資源分配調整

在使用 Docker 時,合理調整容器的 CPU、內存和磁盤空間分配非常重要,這可以確保容器在運行時既能獲得足夠的資源來保證性能,又不會過度占用系統資源影響其他應用程序的運行。

  • CPU 分配
    • 限制核心數:在啟動容器時,可以使用--cpus參數來限制容器使用的 CPU 核心數。例如,docker run -it --cpus=2 ubuntu:latest表示啟動一個 Ubuntu 容器,并限制其最多使用 2 個 CPU 核心。如果你的服務器是多核 CPU,而某個容器對 CPU 性能要求不高,通過這種方式可以避免它占用過多的 CPU 資源,影響其他對 CPU 敏感的容器。
    • 設置 CPU 份額:除了限制核心數,還可以通過--cpu-shares參數設置 CPU 份額,它表示容器在 CPU 資源競爭時的相對權重。默認情況下,所有容器的 CPU 份額都是 1024,值越高,容器在競爭 CPU 資源時能獲得的時間片就越多。例如,有兩個容器 A 和 B,容器 A 的--cpu-shares設置為 512,容器 B 的--cpu-shares設置為 1024,那么在 CPU 資源緊張時,容器 B 獲得的 CPU 時間大約是容器 A 的 2 倍 。使用示例:docker run -it --cpu-shares=512 ubuntu:latest 。
  • 內存分配
    • 限制內存大小:使用--memory參數可以限制容器使用的內存大小。例如,docker run -it --memory=512m ubuntu:latest表示啟動一個 Ubuntu 容器,并限制其最大使用 512MB 的內存。這可以防止某些內存泄漏的容器耗盡服務器的內存資源,導致系統不穩定。
    • 設置內存交換空間:--memory-swap參數用于設置容器的內存和交換空間總和。例如,docker run -it --memory=512m --memory-swap=1g ubuntu:latest表示容器最多可以使用 1GB 的內存(包括 512MB 物理內存和 512MB 交換空間) 。如果不設置--memory-swap,默認情況下,交換空間大小是物理內存的兩倍。
  • 磁盤空間分配
    • 使用--storage-opt參數:對于支持的存儲驅動(如 devicemapper),可以在啟動容器時使用--storage-opt size參數來限制容器可用的存儲空間。例如,docker run -it --storage-opt size=10G ubuntu:latest表示啟動一個 Ubuntu 容器,并限制其磁盤空間為 10GB。
    • 掛載卷時限制大小:當使用數據卷掛載時,也可以通過一些文件系統工具(如xfs_quota、quotaon等)對掛載的卷進行磁盤配額限制,具體方法會因文件系統類型而異。例如,在使用 XFS 文件系統時,可以先啟用配額功能,然后為特定用戶或組設置磁盤配額。

在實際應用中,需要根據容器中運行的應用程序的性能需求和特點,靈活調整這些資源分配參數。可以通過docker stats命令實時監控容器的資源使用情況,以便及時做出調整。

(三)Docker Compose 安裝與使用(可選)

Docker Compose 是 Docker 官方提供的一個用于定義和運行多容器 Docker 應用的工具。它使用 YAML 文件(通常命名為docker-compose.yml)來配置應用的服務、網絡和卷等,通過一個簡單的命令(如docker-compose up)就可以根據配置文件一次性創建并啟動多個容器,這些容器之間可以相互協作,共同構成一個完整的應用系統。

下面介紹在不同系統上安裝 Docker Compose 的方法:

  • Windows 系統:如果你使用的是 Docker Desktop for Windows,Docker Compose 已經包含在其中,安裝 Docker Desktop 后就可以直接使用。安裝完成后,在命令提示符或 PowerShell 中輸入docker-compose --version驗證是否安裝成功,如果顯示版本信息,則說明安裝成功。
  • Mac 系統:可以使用 Homebrew 進行安裝,Homebrew 是 macOS 上常用的包管理工具。打開終端,運行以下命令安裝 Docker Compose:
brew install docker-compose

安裝完成后,同樣通過docker-compose --version命令驗證安裝是否成功。

  • Linux 系統(以 Ubuntu 為例)
    • 下載 Docker Compose 二進制文件,可以從 Docker Compose 的官方 GitHub 倉庫下載最新版本的二進制文件。運行以下命令(請根據實際情況替換版本號):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 賦予執行權限:
sudo chmod +x /usr/local/bin/docker-compose
  • 驗證安裝:
docker-compose --version

下面展示一個簡單的使用示例,假設我們有一個簡單的 Web 應用,由一個 Nginx 服務器和一個 Flask 應用組成,它們需要相互通信。我們可以創建一個docker-compose.yml文件來定義這個多容器應用:

version: '3'
services:web:build:context:.dockerfile: Dockerfile.flaskports:- "5000:5000"depends_on:- nginxnginx:image: nginx:latestports:- "80:80"volumes:-./nginx.conf:/etc/nginx/nginx.conf

在這個示例中:

  • version: '3'指定了 Compose 文件的版本。
  • services部分定義了兩個服務:web和nginx。
    • web服務:
      • build部分指定了從當前目錄(.)下的Dockerfile.flask構建鏡像。
      • ports將容器的 5000 端口映射到主機的 5000 端口。
      • depends_on表示web服務依賴于nginx服務,會先啟動nginx服務。
    • nginx服務:
      • 使用nginx:latest鏡像。
      • 將容器的 80 端口映射到主機的 80 端口。
      • volumes將主機當前目錄下的nginx.conf文件掛載到容器的/etc/nginx/nginx.conf,用于自定義 Nginx 配置。

創建好docker-compose.yml文件后,在該文件所在目錄下打開終端,運行docker-compose up命令,Docker Compose 會根據配置文件自動拉取所需鏡像、構建鏡像(如果需要),并啟動兩個容器,使它們能夠協同工作,構成完整的 Web 應用系統。如果需要在后臺運行容器,可以使用docker-compose up -d命令 。通過這種方式,使用 Docker Compose 可以大大簡化多容器應用的部署和管理過程。

六、常見問題及解決方法

(一)安裝過程中的錯誤提示及解決

在安裝 Docker 的過程中,可能會遇到各種各樣的錯誤提示,下面為大家列舉一些常見的錯誤及對應的解決方法。

  1. 依賴包缺失:在 Linux 系統安裝 Docker 時,可能會遇到依賴包缺失的錯誤。例如,在執行安裝命令時,提示apt-get: error: unrecognized option '--allow-unauthenticated' ,這通常是因為系統中缺少apt-transport-https等依賴包。解決方法是按照前文介紹的步驟,使用apt命令安裝相應的依賴包,如apt install apt-transport-https ca-certificates curl software-properties-common -y ,確保系統具備安裝 Docker 所需的依賴環境。
  2. 網絡問題:安裝過程中,網絡不穩定或無法訪問 Docker 官方源可能導致下載失敗。比如,在添加 Docker 官方 GPG 密鑰時,執行curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg命令出現curl: (7) Failed to connect to download.docker.com port 443: Connection refused錯誤 ,這表明無法連接到 Docker 官方網站。此時,可以檢查網絡連接是否正常,嘗試更換網絡環境,或者使用代理服務器來解決網絡連接問題。另外,也可以嘗試使用國內的鏡像源來加速下載過程,如前文提到的配置阿里云或騰訊云鏡像加速器的方法。
  3. 權限不足:在 Linux 系統中,普通用戶沒有足夠權限直接安裝 Docker。如果嘗試以普通用戶身份執行安裝命令,可能會出現類似sudo: apt: command not found或permission denied的錯誤。解決方法是使用sudo命令獲取管理員權限進行安裝,或者將普通用戶添加到docker組中,具體操作如下:
    • 使用sudo獲取權限:在每個安裝命令前加上sudo,如sudo apt update、sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y等 。
    • 將用戶添加到docker組:執行命令sudo usermod -aG docker $USER ,然后重新登錄,使權限設置生效。這樣,該用戶就可以在不使用sudo的情況下執行 Docker 相關命令。

(二)運行時遇到的問題及排查思路

在 Docker 運行時,也可能會出現各種問題,下面介紹一些常見問題及排查思路和解決方案。

1.容器啟動失敗:當使用docker run命令啟動容器時,容器可能無法正常啟動,并出現各種錯誤提示。

    • 鏡像問題:如果提示Error response from daemon: pull access denied for [鏡像名], repository does not exist or may require 'docker login' ,表示無法拉取指定的鏡像,可能是鏡像名錯誤、鏡像倉庫中不存在該鏡像或者沒有登錄鏡像倉庫。解決方法是檢查鏡像名是否正確,確認鏡像是否存在于倉庫中,若需要登錄倉庫,使用docker login命令進行登錄。
    • 依賴問題:例如提示OCI runtime create failed: container_linux.go:367: starting container process caused: exec: \"[可執行文件]\": executable file not found in $PATH: unknown ,這說明容器中缺少某個可執行文件,導致容器無法正常啟動。解決方法是進入容器(使用docker exec -it [容器ID] /bin/bash命令) ,查看缺少的依賴并手動安裝。例如,如果缺少nginx可執行文件,可以使用容器內的包管理工具(如apt-get或yum)進行安裝,如apt-get update && apt-get install -y nginx 。
    • 端口沖突:當啟動容器時,如果提示docker: Error response from daemon: driver failed programming external connectivity on endpoint [容器名] (xxx): Bind for 0.0.0.0:80 failed: port is already allocated ,表示容器要映射的端口已被占用。解決方法是檢查占用該端口的進程(使用lsof -i:端口號命令查看) ,可以停止占用端口的進程,或者更改容器映射的端口。例如,將容器的 80 端口映射改為 8080 端口,啟動命令為docker run -p 8080:80 [鏡像名] 。

2.網絡連接問題:容器運行時可能出現無法連接到外部網絡或容器間無法通信的問題。

    • 容器無法訪問外網:如果容器內的應用程序無法訪問外部網絡,如執行ping www.baidu.com命令提示ping: www.baidu.com: Name or service not known ,首先檢查容器的網絡配置是否正確。可以通過docker network inspect bridge命令查看容器所在網絡的配置,確保網絡配置正確。若網絡配置無誤,可能是 DNS 配置問題,可以在容器啟動時指定 DNS 服務器,如docker run --dns 8.8.8.8 -it [鏡像名] ,使用 Google 的公共 DNS 服務器 8.8.8.8。另外,也需要檢查主機的防火墻設置,確保沒有阻止容器的網絡訪問。
    • 容器間無法通信:當多個容器需要相互通信但無法連接時,先確認容器是否在同一網絡中。可以使用docker network ls命令查看所有網絡,使用docker network inspect [網絡名]命令查看網絡詳情,確保相關容器連接到同一網絡。如果容器在同一網絡仍無法通信,檢查容器的 IP 地址和端口映射是否正確,使用docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器名]命令獲取容器 IP ,并通過telnet [容器IP] [端口號]或nc -zv [容器IP] [端口號]命令測試連通性。同時,排查防火墻規則或 SELinux 策略是否限制了通信,可以臨時關閉防火墻(使用systemctl stop firewalld命令) 或調整 SELinux 策略(如設置為寬松模式setenforce 0) 來測試連通性。若使用自定義網絡,確保網絡驅動正常工作,嘗試重啟 Docker 服務(systemctl restart docker) 或重建網絡(docker network rm [網絡名]后重新創建) 。

七、總結與展望

通過本文的詳細介紹,我們深入了解了在 Windows、Mac 和 Linux(以 Ubuntu 為例)系統上安裝 Docker 的完整過程,以及安裝后的配置與優化方法,還探討了常見問題的解決思路。在 Windows 系統上,借助 Docker Desktop 并合理配置 Hyper-V 和 WSL 2,能順利開啟 Docker 之旅;Mac 系統則通過簡單的下載和拖動操作即可完成安裝,后續配置也十分便捷;Linux 系統雖然步驟相對較多,但通過更新系統、安裝依賴、添加軟件源等一系列操作,也能成功安裝并穩定運行 Docker。

Docker 作為容器化技術的杰出代表,為我們的開發和運維工作帶來了前所未有的便利。它打破了環境差異的壁壘,實現了應用程序及其依賴的一體化封裝,真正做到了 “一次構建,到處運行” 。無論是在開發階段快速搭建一致的開發環境,還是在運維過程中實現高效的部署、擴展和管理,Docker 都展現出了強大的優勢。

希望讀者們能夠充分利用 Docker 這一強大的工具,將其融入到日常的開發和運維工作中。不斷探索 Docker 在更多場景下的應用,如微服務架構的構建、持續集成 / 持續部署(CI/CD)流程的優化等。同時,隨著容器化技術的不斷發展,Kubernetes 等容器編排工具也日益成熟,建議大家進一步學習和了解,以實現對容器化應用的更高級管理和規模化部署,在數字化時代的技術浪潮中,不斷提升自己的技術能力和競爭力。

?

寫在最后:

? ? ?希望這篇博客能夠為你在Docker容器開發和部署項目中提供一些啟發和指導。如果你有任何問題或需要進一步的建議,歡迎在評論區留言交流。讓我們一起探索IT世界的無限可能!


博主還分享了本文相關文章,請各位大佬批評指正:

1、Intellij idea高效使用教程

2、AI編程工具合集

3、CodeGeeX一款基于大模型全能的智能編程助手

4、Git 代碼提交注釋管理規范

5、解釋 Git 的基本概念和使用方式。

6、postman介紹、安裝、使用、功能特點、注意事項

7、Windows10安裝Docker Desktop(大媽看了都會)

8、02-pycharm詳細安裝教程(大媽看了都會)

9、01-Python詳細安裝教程(大媽看了都會)

10、2024年最新版IntelliJ IDEA下載安裝過程(含Java環境搭建)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94900.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【微信小程序】分別解決H5的跨域代理問題 和小程序正常不需要代理問題

——總問&#xff1a;何為跨域和代理&#xff1f; &#x1f539;什么叫跨域&#xff1f; 前端在瀏覽器里發請求時&#xff0c;如果 域名 / 協議 / 端口 三個中有一個不一樣&#xff0c;就會觸發 跨域問題。 例子&#xff1a; 頁面跑在 http://localhost:5173你要請求接口 http:…

數字簽名 digital signature

文章目錄1、嚴謹的定義2、技術原理&#xff1a;如何工作&#xff1f;第一步&#xff1a;發送者 - 簽名過程第二步&#xff1a;接收者 - 簽名驗證過程3、C語言實現示例4、關鍵技術要點5、安全注意事項6、最重要的應用&#xff1a;TLS/SSL 與網站安全1、嚴謹的定義 數字簽名是一…

對于STM32工程模板

工程模板文件下載鏈接 https://download.csdn.net/download/qq_58631644/91809234 重命名 打開這個文件夾 重命名保持一致 雙擊打開

使用 SmartIDE 開發長安鏈 Go 語言智能合約

文章目錄官方文檔Chrome 插件登錄 SmartIDE合約調試合約編譯官方文檔 使用SmartIDE編寫Go智能合約 Chrome 插件 https://git.chainmaker.org.cn/chainmaker/chainmaker-smartplugin/-/releases 登錄 SmartIDE https://ide.chainmaker.org.cn/ 合約調試 合約編譯

MEM課程之物流與供應鏈管理課程經典案例及分析-個人原創內容放在此保存

供應鏈管理課程案例 特殊時期期間,美國出現養豬戶對數百萬頭豬實施安樂死和奶農傾倒牛奶現象。從供應鏈的角度分析該現象并提出應對思路。要求有分析框架和文獻支撐。 供應鏈管理課程案例分析 從供應鏈角度分析特殊時期美國豬安樂死和傾倒牛奶現象 本文描述了特殊時期期間,美…

Transformer:從入門到精通

學習一個深度學習模型&#xff0c;我們首先需要從理論的角度理解它的構架&#xff0c;進而理解代碼。 Transformer背景 首先我們知道&#xff0c;神經網絡有一個巨大的家族&#xff0c;其中的CNN&#xff08;卷積神經網絡&#xff09;源于視覺研究&#xff0c;目標是讓機器自…

FOC開環控制代碼解讀

這段代碼實現了一個開環速度控制系統&#xff0c;用于控制電機轉速。它通過PWM控制器輸出電壓信號&#xff0c;來驅動電機轉動。具體來說&#xff0c;它在指定目標速度下&#xff0c;持續通過電壓信號進行控制。下面是對該代碼詳細流程的逐步解析&#xff1a; 1. 宏定義與變量初…

Ansible Playbook 調試與預演指南:從語法檢查到連通性排查

1&#xff1a;調試 playbook 時&#xff0c;最該先看哪一段輸出&#xff1f; 答&#xff1a;先查看ansible-navigator run的 PLAY RECAP 段落&#xff0c;它能一次性給出每臺受管主機的 ok、changed、unreachable、failed、skipped、rescued、ignored 等計數&#xff0c;快速定…

深入探討可視化技術如何實現安全監測

可視化在安全監測中的作用&#xff0c;遠超越了“美觀的圖表”這一表層概念。它是將抽象、混沌的安全數據轉化為直觀、可理解的視覺信息的過程&#xff0c;其核心價值在于賦能人類直覺&#xff0c;大幅提升認知與決策效率&#xff0c;從而實現對安全態勢的深度感知和快速響應。…

Scikit-learn Python機器學習 - Scikit-learn加載數據集

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

如何在實際應用中選擇Blaze或Apache Gluten?

Blaze 與 Apache Gluten 深入研究報告&#xff1a;技術實現、性能對比與選型指南 一、項目背景與技術演進 1.1 大數據處理性能瓶頸與 Native 引擎興起 隨著大數據量處理需求的不斷增長&#xff0c;基于 JVM 的 Spark 在 CPU 密集型場景下的性能瓶頸日益凸顯。從 Spark 2.4 版本…

Mysql 學習感悟 Day 1 Mysql架構

Mysql 學習感悟 Day 1簡介具體流程如下&#xff1a;Server 層連接器查詢緩存分析器優化器執行器存儲引擎層更新語句是怎么執行的例子日志redo logbinlogmysql事務的二段提交Mysql官網 mysql安裝教程 Navicat免費安裝親測有用 簡介 大體來說&#xff0c;MySQL 服務端可以分為…

企業為什么需要部署數據防泄露系統?

在數字化轉型的浪潮中&#xff0c;企業核心數據已成為商業競爭的“生命線”。然而&#xff0c;數據泄露事件頻發&#xff0c;不僅可能導致巨額經濟損失&#xff0c;更會嚴重損害企業信譽。據IBM《2023年數據泄露成本報告》顯示&#xff0c;全球平均數據泄露成本已攀升至445萬美…

CPU的MBR寄存器和MDR寄存器

在學習計算機組成原理&#xff0c;特別是學到CPU時&#xff0c;寄存器是必須了解的一些器件&#xff0c;比如說程序計數器&#xff08;PC&#xff09;,指令寄存器&#xff08;IR&#xff09;等寄存器&#xff0c;同時&#xff0c;了解MDR和MBR這兩個寄存器也是必要的&#xff1…

QWidget和QML模式下阻止槽調用的方法總結

目錄 1.背景 2.QWidget中阻止槽函數調用的方法 2.1.臨時阻塞信號發射&#xff08;blockSignals()&#xff09; 2.2.斷開特定信號與槽的連接&#xff08;disconnect()&#xff09; 2.3.在槽函數內通過標志位過濾 2.4.重寫信號發射函數&#xff08;針對自定義信號&#xff…

序列化,應用層自定義協議

我們發的是一個結構化的數據OS內部&#xff0c;協議全部都是傳遞結構體對象。可以直接發送二進制對象嗎&#xff1f;因為CS雙方都能認識這個結構體!!!可以直接發送二進制對象&#xff0c;但是不建議1. 客戶端和服務器說屬于不同的OS&#xff0c;不同的結構體&#xff0c;在不同…

序列化和反序列的學習

一&#xff1a;重談協議1 理解網絡協議&#xff0c;可以把它想象成網絡世界里的“交通規則”和“通用語言”。它是一套預先定義好的規則、標準和約定&#xff0c;使得不同設備、不同系統之間能夠順利地進行通信和數據交換。我們從TCP協議上面理解一下&#xff0c;首先TCP服務是…

計算機畢業設計 java 在線學習系統 基于 Java 的在線教育平臺 Java 開發的學習管理系統

計算機畢業設計 java 在線學習系統fk01a40i &#xff08;配套有源碼 程序 mysql數據庫 論文&#xff09;本套源碼可以先看具體功能演示視頻領取&#xff0c;文末有聯xi 可分享傳統學習模式受時空限制&#xff0c;互動性不足&#xff0c;難以滿足個性化學習需求。為打破限制&…

淘寶利用商品關鍵詞獲取商品信息指南

一、核心API接口選擇接口名稱功能描述適用場景taobao.items.search通過關鍵詞搜索商品&#xff0c;支持分頁、排序&#xff0c;返回商品列表&#xff08;含標題、價格、銷量、圖片等&#xff09;普通商品搜索、競品監控、數據分析taobao.tbk.item.get淘寶客API&#xff0c;返回…

紅黑樹下探玄機:C++ setmultiset 的幕后之旅

目錄 一、關聯式容器 二、鍵值對 三、set 四、set的構造 五、set的iterator 六、set的Operations 七、multiset 一、關聯式容器 序列式容器 &#xff1a; 在初階階段&#xff0c;我們已經接觸過STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forwa…