Docker系列(二):開機自啟動與基礎配置、鏡像加速器優化與疑難排查指南

引言

docker 的快速部署與高效運行依賴于兩大核心環節:基礎環境搭建與鏡像生態優化。本期博文從零開始,系統講解 docker 服務的管理配置與鏡像加速實踐。第一部分聚焦 docker 服務的安裝、權限控制與自啟動設置,確保環境穩定可用;第二部分深入 鏡像源的配置策略與故障排查,解決國內網絡環境下的鏡像拉取瓶頸。通過遵循本文指引,各位觀眾老爺將掌握 docker 環境初始化、權限管理及鏡像加速的全流程技能,為容器化開發運維構建高效、可靠的基礎平臺。

最后,如果大家喜歡我的創作風格,請大家多多關注up主,你們的支持就是我創作最大的動力!如果各位觀眾老爺覺得我哪些地方需要改進,請一定在評論區告訴我,馬上改!在此感謝大家了。

各位觀眾老爺,本文通俗易懂,快速熟悉Docker,收藏本文,關注up不迷路,后續將持續分享Docker純干貨(請觀眾老爺放心,絕對又干又通俗易懂)。請多多關注、收藏、評論,評論區等你~~~



文章目錄

  • 引言
  • 一、docker 服務安裝與基礎配置
    • 1.1 啟動docker服務
      • 1.1.1 初次啟動docker
      • 1.1.2 設置開機自啟動
    • 1.2 免 `sudo` 運行 docker 及驗證
      • 1.2.1 添加 docker 用戶組( 可選,推薦!
      • 1.2.2 驗證是否生效
  • 二、Docker 鏡像源配置與加速
    • 2.1 鏡像源的作用與必要性
      • 2.1.1 鏡像源是什么?有什么作用
      • 2.1.2 為什么要修改默認鏡像源
    • 2.2 配置鏡像源
      • 2.2.1 準備工作
      • 2.2.2 修改 `daemon.json` 配置文件
      • 2.2.3 重啟 docker 服務使配置生效
      • 2.2.4 驗證鏡像源配置
    • 2.3 常見問題與解決辦法
      • 2.3.1 配置文件格式錯誤
      • 2.3.2 鏡像源未生效
  • 往期回顧 --- 往期專欄 和 系列博文



正 文

一、docker 服務安裝與基礎配置

本章節將涵蓋從服務初始化到日常使用的關鍵步驟。內容包括 docker 服務的啟動與開機自啟設置,確保環境持久可用;同時詳解 免 sudo 運行 docker 的權限配置方案,通過用戶組管理提升操作便捷性。通過遵循本章指引,各位觀眾老爺可快速搭建 docker 基礎環境,解決權限依賴問題,為后續容器化操作奠定高效、安全的基礎。

1.1 啟動docker服務

1.1.1 初次啟動docker

  1. 檢查狀態(確認是否運行)
sudo systemctl status docker# 退出請按 q

如下圖所示,這是我的docker狀態:

在這里插入圖片描述

  1. 啟動docker服務
sudo systemctl start docker
  1. 停止docker服務(如需)
sudo systemctl stop docker

注釋: 以下是使用表格形式整理的 sudo systemctl start docker 命令解析

部分作用補充說明
sudo以超級用戶(root)權限執行后續命令。普通用戶需通過 sudo 提升權限才能管理系統服務。
systemctlSystemd 系統和服務管理器的控制工具,用于管理服務、掛載點等。Systemd 是現代 Linux 發行版的默認初始化系統,負責啟動和管理進程。
start啟動指定的服務單元。其他常用操作:
- stop:停止服務
- restart:重啟服務
- enable:開機自啟
- status:查看狀態
docker目標服務單元名稱(對應 docker.service 文件),啟動 Docker 守護進程。服務文件路徑:/usr/lib/systemd/system/docker.service,定義依賴、環境等配置。

這部分內容關于 Ubuntu系統服務管理 的詳細分析解讀,已經給各位觀眾老爺細致解讀過,請參考 Ubuntu教學系列(六):權限控制與系統管理 。

1.1.2 設置開機自啟動

  1. 設置docker開機自啟動
sudo systemctl enable docker

運行此命令后,docker服務將在每次系統重啟時自動啟動。

  1. 可再次查看服務狀態
sudo systemctl is-enabled docker

如果輸出為 enabled,則表示 docker 服務已成功配置為在啟動時自動運行。具體如下圖所示。

在這里插入圖片描述

1.2 免 sudo 運行 docker 及驗證

1.2.1 添加 docker 用戶組( 可選,推薦!

  1. 添加docker用戶組
# 將用戶加入 docker 組
sudo usermod -aG docker $USER

注釋: 以下是 sudo usermod -aG docker $USER 命令的解釋

部分作用補充說明
sudo以管理員權限執行命令修改用戶組需要 root 權限
usermod修改用戶賬戶屬性的工具常用于調整用戶所屬組、家目錄等
-aG-a:追加用戶到組(不覆蓋原有組)
-G:指定目標組名
若省略 -a,用戶會被移出其他組,僅保留 docker
docker目標用戶組名加入此組后,用戶可直接運行 Docker 命令,無需 sudo
$USER環境變量,表示當前用戶名自動替換為你的登錄用戶名(如 john),無需手動修改

命令作用

  • 核心功能:將當前用戶加入 docker 用戶組,使其擁有直接操作 Docker 的權限(無需 sudo)。

  • 典型場景:解決直接運行 docker ps 時提示 Permission denied 的問題。

  1. 生效方法

修改用戶組后,需 重新登錄重啟系統 使組權限生效。提供兩種方法:

  • 注銷重新登錄

    無需重啟整個系統,僅需:

# 注銷當前會話(圖形界面或終端)
logout
# 或使用以下命令重新加載組(部分系統有效)
newgrp docker
  • 重啟系統(推薦)
# 立即重啟系統(需 sudo 權限)
sudo reboot

1.2.2 驗證是否生效

# 無需 sudo,直接查看容器列表
docker ps  

如下圖所示,需要說明的是,docker ps查詢的是正在運行的容器列表,我的容器列表是空的,正是因為我目前并沒有運行容器。

在這里插入圖片描述

關于如何使用docker的相關操作,馬上更新,會非常詳細的講解每一個操作,給出超級詳細的解釋,趕快關注uo主吧,分享超級干貨!!!

二、Docker 鏡像源配置與加速

docker 鏡像源是提升容器化工作效率的關鍵環節,尤其在國內網絡環境下,默認鏡像源的訪問延遲和穩定性問題常成為瓶頸。本章將系統講解 鏡像源的核心作用、配置方法與驗證技巧,并針對典型問題提供解決方案。通過配置國內鏡像加速器,各位觀眾老爺可顯著縮短鏡像拉取時間,避免下載中斷,同時掌握 daemon.json 文件調優與服務重啟等實操技能,為構建高效、穩定的鏡像拉取環境提供可靠保障。

2.1 鏡像源的作用與必要性

2.1.1 鏡像源是什么?有什么作用

  1. 鏡像源

鏡像源是 Docker 鏡像的代理倉庫,充當用戶與 Docker Hub(默認官方源)之間的緩存中介。

  1. 其核心作用
  • 加速鏡像拉取:通過地理就近的服務器分發鏡像,減少跨國網絡延遲。

  • 提升可用性:在官方源不可用時,仍可通過鏡像源獲取緩存內容。

  • 企業級管控:支持搭建私有鏡像源,統一管理內部鏡像依賴(如 Harbor 私有倉庫)。

2.1.2 為什么要修改默認鏡像源

Docker 默認從境外 Docker Hub 拉取鏡像,國內用戶直接訪問時面臨以下問題:

  • 速度瓶頸:跨境網絡帶寬限制,導致下載耗時(如 Ubuntu 基礎鏡像可能需數十分鐘)。

  • 匿名限流:Docker Hub 對未登錄用戶實施嚴格的請求限流策略,頻繁操作易觸發攔截。

  • 穩定性風險:國際鏈路波動或防火墻干擾可能導致連接中斷。
    使用國內鏡像源可針對性解決上述痛點,顯著優化體驗。

2.2 配置鏡像源


注釋:這個小節涉及關于 文件方面的操作,不熟悉的觀眾老爺,請參考 Ubuntu系列教學(五):文件與目錄的精準操控,有非常詳細的解讀。系統服務 方面的內容,上面已經給出鏈接,這里就不再贅述。

2.2.1 準備工作

  1. 確認 docker 服務已啟動(可跳過,已經設置自啟動)
# 檢查 Docker 服務狀態
sudo systemctl status docker# 若未運行,手動啟動
sudo systemctl start docker   
  1. 備份 Docker 配置文件(可選,推薦)

docker 的鏡像源配置就是修改Ubuntu系統路徑 /etc/docker/ 下的 daemon.json 文件。

# 備份配置文件
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak  

2.2.2 修改 daemon.json 配置文件

  1. 創建或編輯配置文件
# 使用 vim 編輯器
sudo vim /etc/docker/daemon.json  # 使用 nano 編輯器
sudo nano /etc/docker/daemon.json  
  1. 添加鏡像源地址
{"registry-mirrors": ["地址1","地址3","地址3"]
}

操作示例

{"registry-mirrors": ["https://hub-mirror.c.163.com","https://<your-aliyun-mirror>.mirror.aliyuncs.com""https://mirror.baidubce.com"]
}

注釋:上面主要是教各位觀眾老爺如何更換鏡像源,這部分是純干貨也可能是各位觀眾老爺最關心的地方。

下面的鏡像源是我目前正在使用的,并且文章下面也給出了驗證,完全可以使用!直接復制粘貼我的鏡像就可以!

來源:軒轅鏡像 。

{"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me","https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
  1. 將 1 和 2 操作簡化(視個人習慣,我習慣使用 1 和 2 操作)
sudo vim /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me","https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
EOF

注釋<<EOF EOF

  • << 是 shell 中的一種重定向操作符,用于表示將后面的內容作為前面命令的標準輸入。
  • EOF 是一個約定俗成的標記,用于表示后面的內容是重定向的內容,直到遇到另一個 EOF 標記時結束。在這里,它的作用是告訴 shell,從 <<EOF開始到下一個 EOF 結束的內容,都要作為 vim 編輯器的輸入,即要寫入到 /etc/docker/daemon.json 文件中的內容。

2.2.3 重啟 docker 服務使配置生效

sudo systemctl daemon-reload    # 重新加載配置
sudo systemctl restart docker  # 重啟 Docker 服務

2.2.4 驗證鏡像源配置

# 查看已配置的鏡像源
docker info | grep -A 1 "Registry Mirrors"# 測試拉取鏡像速度
docker pull ubuntu:latest

這是我使用的鏡像源,截至(2025.5.23)完全可以正常使用,如下圖所示。

在這里插入圖片描述

2.3 常見問題與解決辦法

2.3.1 配置文件格式錯誤

  • 安裝校驗工具jq

    sudo apt update && sudo apt install jq
    
  • 校驗JSON 格式

    sudo jq . /etc/docker/daemon.json
    

2.3.2 鏡像源未生效

  • 現象:docker info 未顯示鏡像源地址。

  • 解決

    • 確認配置文件路徑為 /etc/docker/daemon.json

    • 檢查 Docker 服務是否成功重啟。

    • 關鍵的是,也是最有可能的,鏡像源失效!唯一的解決辦法是,換源!方法如上,和更換默認源一致。



結 束 語

能夠看到這里的觀眾老爺,無疑是對up的最大肯定和支持,在此懇求各位觀眾老爺能夠多多點贊、收藏和關注(強烈推薦大家關注一下up主和新建的這個合集“Ubuntu系統教學系列”)。在這個合集中,未來將持續給大家分享關于Ubuntu系統生態中的多種常見開發實用操作。未來也將繼續分享Docker、conda、ROS等等各種實用干貨。感謝大家支持!

我也除了更新剛剛新開的“Docker”合集,也會繼續更新“Ubuntu系統教學系列”合集,歡迎大家繼續關注。各位觀眾老爺的支持,就是我創作的最大動力!!!


往期回顧 — 往期專欄 和 系列博文


往期專欄: Ubuntu系統教學系列

本期專欄: Docker

Docker系列(一):初識Docker、安裝并快速上手實踐,逐幀過!!!

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

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

相關文章

計算機視覺(圖像算法工程師)學習路線

計算機視覺學習路線 Python基礎 常量與變量 列表、元組、字典、集合 運算符 循環 條件控制語句 函數 面向對象與類 包與模塊Numpy Pandas Matplotlib numpy機器學習 回歸問題 線性回歸 Lasso回歸 Ridge回歸 多項式回歸 決策樹回歸 AdaBoost GBDT 隨機森林回歸 分類問題 邏輯…

工業軟件國產化:構建自主創新生態,賦能制造強國建設

隨著全球產業環境的變化和技術的發展&#xff0c;建立自主可控的工業體系成為我國工業轉型升級、走新型工業化道路、推動國家制造業競爭水平提升的重要抓手。 市場倒逼與政策護航&#xff0c;國產化進程雙輪驅動 據中商產業研究院預測&#xff0c;2025年中國工業軟件市場規模…

OpenCV CUDA 模塊圖像過濾------創建一個高斯濾波器函數createGaussianFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模塊中的一個工廠函數&#xff0c;用于創建一個高斯濾波器。這個濾波器可以用來平滑圖像&#…

【RocketMQ 生產者和消費者】- 生產者發送故障延時策略

文章目錄 1. 前言2. FaultItem3. LatencyFaultToleranceImpl 容錯集合處理類3.1 updateFaultItem 更新容錯集合3.2 isAvailable 判斷 broker 是否可用3.3 pickOneAtLeast 至少選出一個故障 broker 4. MQFaultStrategy 故障策略類4.1 屬性4.2 updateFaultItem 更新延遲故障容錯信…

【HarmonyOS 5】Map Kit 地圖服務之應用內地圖加載

#HarmonyOS SDK應用服務&#xff0c;#Map Kit&#xff0c;#應用內地圖 目錄 前期準備 AGC 平臺創建項目并創建APP ID 生成調試證書 生成應用證書 p12 與簽名文件 csr 獲取 cer 數字證書文件 獲取 p7b 證書文件 配置項目簽名 項目開發 配置Client ID 開通地圖服務 配…

(1-6-1)Java 集合

目錄 0.知識概述&#xff1a; 1.集合 1.1 集合繼承關系類圖 1.2 集合遍歷的三種方式 1.3 集合排序 1.3.1 Collections實現 1.3.2 自定義排序類 2 List 集合概述 2.1 ArrayList &#xff08;1&#xff09;特點 &#xff08;2&#xff09;常用方法 2.2 LinkedList 3…

Vue.extend

Vue.extend 是 Vue 2 中的一個重要 API&#xff0c;用于基于一個組件配置對象創建一個“可復用的組件構造函數”。它是 Vue 內部構建組件的底層機制之一&#xff0c;適用于某些高級用法&#xff0c;比如手動掛載組件、彈窗動態渲染等。 ?? 在 Vue 3 中已被移除&#xff0c;V…

【MySQL系列】SQL 分組統計與排序

博客目錄 引言一、基礎語法解析二、GROUP BY 的底層原理三、ORDER BY 的排序機制四、NULL 值的處理策略五、性能優化建議六、高級變體查詢 引言 在現代數據分析和數據庫管理中&#xff0c;分組統計是最基礎也是最核心的操作之一。無論是業務報表生成、用戶行為分析還是系統性能…

spring中的InstantiationAwareBeanPostProcessor接口詳解

一、接口定位與核心功能 InstantiationAwareBeanPostProcessor是Spring框架中擴展Bean生命周期的關鍵接口&#xff0c;繼承自BeanPostProcessor。它專注于Bean的實例化階段&#xff08;對象創建和屬性注入&#xff09;的干預&#xff0c;而非父接口的初始化階段&#xff08;如…

uniapp使用sse連接后端,接收后端推過來的消息(app不支持!!)

小白終成大白 文章目錄 小白終成大白前言一、什么是SSE呢&#xff1f;和websocket的異同點有什么&#xff1f;相同點不同點 二、直接上實現代碼總結 前言 一般的請求就是前端發 后端回復 你一下我一下 如果需要有什么實時性的 后端可以主動告訴前端的技術 我首先會想到 webso…

QML學習06Button

QMLx學習06Button 1、Button1.1 狀態改變&#xff08;checkable&#xff09;1.2 排斥性&#xff08;autoExclusive&#xff09;1.3 重復觸發&#xff08;autoRepeat&#xff09;、第一次觸發延時時間&#xff08;autoRepeatDelay&#xff09;、相互之間觸發的時間間隔&#xff…

什么是前端工程化?它有什么意義

前端工程化是指通過工具、流程和規范,將前端開發從手工化、碎片化的模式轉變為系統化、自動化和標準化的生產過程。其核心目標是 提升開發效率、保障代碼質量、增強項目可維護性,并適應現代復雜 Web 應用的需求。 一、前端工程化的核心內容 1. 模塊化開發 代碼模塊化:使用 …

校園二手交易系統

該交易平臺分為兩部分&#xff0c;前臺和后臺。用戶在前臺進行商品選購以及交易&#xff1b;管理員登錄后臺可以對商品進行維護&#xff0c;主要功能包含&#xff1a; 后臺系統的主要功能模塊如下&#xff1a; 登錄功能、注冊功能、后臺首頁 系統設置&#xff1a; 菜單管理、…

06-Web后端基礎(java操作數據庫)

1. 前言 在前面我們學習MySQL數據庫時&#xff0c;都是利用圖形化客戶端工具(如&#xff1a;idea、datagrip)&#xff0c;來操作數據庫的。 我們做為后端程序開發人員&#xff0c;通常會使用Java程序來完成對數據庫的操作。Java程序操作數據庫的技術呢&#xff0c;有很多啊&a…

uni-app學習筆記十三-vue3中slot插槽的使用

在頁面開發中&#xff0c;通常一個頁面分為頭部&#xff0c;尾部&#xff0c;和中心內容區。其中頭部&#xff0c;尾部一般比較固定&#xff0c;而中心區域往往是多樣的&#xff0c;需要自定義開發。此時&#xff0c;我們可以引入slot(插槽)來實現這一目標。<slot> 作為一…

Agent模型微調

這篇文章講解&#xff1a; 把 Agent 和 Fine-Tuning 的知識串起來&#xff0c;在更高的技術視角看大模型應用&#xff1b;加深對 Agent 工作原理的理解&#xff1b;加深對 Fine-Tuning 訓練數據處理的理解。 1. 認識大模型 Agent 1.1 大模型 Agent 的應用場景 揭秘Agent核心…

【最新版】Arduino IDE的安裝入門Demo

1、背景說明 1、本教程編寫日期為2025-5-24 2、Arduino IDE的版本為&#xff1a;Arduino IDE 2.3.6 3、使用的Arduino為Arduino Uno 1、ArduinoIDE的安裝 1、下載。網址如下&#xff1a;官網 2、然后一路安裝即可。 期間會默認安裝相關驅動&#xff0c;默認安裝即可。 3、安…

Python應用運算符初解

大家好!運算符是編程中不可或缺的工具&#xff0c;它們能幫助我們執行各種計算和操作。無論是數學運算&#xff0c;還是變量賦值&#xff0c;運算符都在背后默默發揮作用。對于編程初學者來說&#xff0c;理解并掌握常見運算符的用法是邁向編程世界的重要一步。 算術運算符: 加…

小米2025年校招筆試真題手撕(二)

一、題目 給一個長度為n的序列和一個整數x&#xff0c;每次操作可以選擇序列中的一個元素&#xff0c;將其從序列中刪去&#xff0c;或者將其值加一。 問至少操作多少次&#xff0c;可以使操作后的序列&#xff08;可以為空&#xff09;中數字之和是x的倍數。 輸入描述&#…

CNN卷積神經網絡到底卷了啥?

參考視頻&#xff1a;卷積神經網絡&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分鐘帶你快速了解&#xff01; 我們知道&#xff1a; 圖片是由像素點構成&#xff0c;即最終的成像效果是由背后像素的顏色數值所決定 在Excel中&#xff1a;有這樣一個由數值0和1組成的66…