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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…