当前位置: 首页 > article >正文

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” 和 专栏 “Ubuntu系统教学系列”



正 文

一、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系统教学系列”合集,欢迎大家继续关注。各位观众老爷的支持,就是我创作的最大动力!!!


往期回顾 — 专栏 “Docker” 和 专栏 “Ubuntu系统教学系列”


往期专栏: Ubuntu系统教学系列

本期专栏: Docker

Docker(一):初识Docker、安装并快速上手实践,逐帧过!!!

相关文章:

Docker(二):开机自启动与基础配置、镜像加速器优化与疑难排查指南

引言 docker 的快速部署与高效运行依赖于两大核心环节&#xff1a;基础环境搭建与镜像生态优化。本期博文从零开始&#xff0c;系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置&#xff0c;确保环境稳定可用&#xff1b…...

Lua基础语法

文章目录 一、注释二、 数据类型1. 注意事项2. 全局/局部变量 三、 标识符1. 保留字2. 变量3. 动态类型 四、 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 其他运算符 五、 函数1. 固定参函数2. 可变参函数3. 可返回多个值4. 函数作为参数 六、循环控制语句1. while...do…...

2025年渗透测试面试题总结-匿名[实习]安全工程师(安全厂商)(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 一面技术问题 1. Burp插件原理 2. JavaWeb项目经验 3. CC1-7链原理&#xff08;以CC6为例&#xff0…...

【node.js】实战项目

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. 项目概览与架构设计1.1 实战项目&#xff1a;企业级电商管理系统1.2 技术栈选择 2. 项目初始化与基础架构2.1 项目结构设计2.2 基础配置管理 3. 用户服务实现3.1 用户服务架构3.2 用户模型设计3.3 用户服务…...

从AD9361 到 ADSY1100 ,中间的迭代产品历史

从 AD9361 到 ADSY1100 的演进&#xff0c;是 Analog Devices&#xff08;ADI&#xff09;在射频收发器&#xff08;RF Transceiver&#xff09;集成化、高性能、宽带宽、低功耗和波束赋形能力方面持续推进的一个路线。以下是其中的重要芯片节点和核心参数对比&#xff1a; 1. …...

免费插件集-illustrator插件-Ai插件-查找选中颜色与pantone中匹配颜色

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;实现查找选中颜色与pantone中匹配颜色。首先从下载网址下载这款插件https://download.csdn.net/download/m0_6731…...

redis集合类型

练习命令使用&#xff0c;具体如下&#xff1a; 练习无序集合类型命令 sadd smembers scard srem sinter sunion sdiff sismember srandmember spop 练习有序集合类型命令 无序集合中的每个元素都是不同的&#xff0c;且没有顺序 创建/追加/删除/查看 127.0.0.1:6379>…...

[爬虫实战] 爬微博图片:xpath的具体运用

博客配套代码发布于github&#xff1a;微博图片 相关知识点&#xff1a;图片懒加载 [爬虫知识] 数据解析 相关爬虫专栏&#xff1a;JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 这里我们以网页微博图片为例&#xff0c;尝试获取该页面下所有图片并保存。 一、分析网站 刷…...

MySQL中简单的操作

一.数据库 1.1数据库的建立&#xff1a; create database 库名&#xff1b; 1.2数据库的查看&#xff1a; show databases&#xff1b; 1.3数据库的删除&#xff1a; drop database 库名&#xff1b; 二.数据库中的表 2.1表的建立&#xff1a; create table 表名&…...

NNG和DDS

NNG (Nanomsg Next Generation) 和 DDS (Data Distribution Service) 是两种不同的通信协议&#xff0c;各自在不同场景下具有其优势。下面我将对这两种技术进行详细解释&#xff0c;并通过具体的例子来说明它们如何应用在实际场景中。 1. NNG (Nanomsg Next Generation) NNG简…...

防震基座在半导体晶圆制造设备抛光机详细应用案例-江苏泊苏系统集成有限公司

在半导体制造领域&#xff0c;晶圆抛光作为关键工序&#xff0c;对设备稳定性要求近乎苛刻。哪怕极其细微的振动&#xff0c;都可能对晶圆表面质量产生严重影响&#xff0c;进而左右芯片制造的成败。以下为您呈现一个防震基座在半导体晶圆制造设备抛光机上的经典应用案例。 企…...

框架开发与原生开发的权衡:React案例分析(原生JavaScript)

文章目录 框架开发与原生开发的权衡&#xff1a;React案例分析引言框架开发的优势开发效率提升状态管理的便捷性组件复用与生态系统团队协作与规范统一 原生开发的优势性能优化空间学习曲线平缓精细控制与定制化避免版本依赖与迁移成本 实际应用案例分析大型企业应用性能关键型…...

Lua5.4.2常用API整理记录

一、基础函数 1.type(value)​​ 返回值的类型&#xff08;如 "nil", "number", "string", "table", "function" 等&#xff09;。 代码测试&#xff1a; a 0 print(type(a)) a nil print(type(a)) a "aaaaaaaa&…...

Python打卡训练营学习记录Day36

仔细回顾一下神经网络到目前的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a;对之前的信贷项目&#xff0c;利用神经网络训练下&#xff0c;尝试用到目前的知识点让代码更加规范和美观。 import pandas as pd #用于数据处理和分析&#xff0c;可处理表格数…...

### Mac电脑推送文件至Gitee仓库步骤详解

**核心流程及命令说明&#xff1a;** #### 1. **配置全局Git用户信息** bash git config --global user.name "shenguanling" git config --global user.email "3259125968qq.com" - **作用**&#xff1a;设置提交代码时的作者信息&#xff0…...

官方SDK停更后的选择:开源维护的Bugly Unity SDK

腾讯Bugly&#xff0c;为移动开发者提供专业的异常上报和运营统计&#xff0c;帮助开发者快速发现并解决异常&#xff0c;同时掌握产品运营动态&#xff0c;及时跟进用户反馈。 但是&#xff0c;免费版的Unity SDK已经很久不更新了&#xff0c;会有一些问题和特性缺失&#xff…...

什么是智能体agent?

文章目录 什么是智能体agent&#xff1f;最基本的核心思想我们是如何走到今天以及为什么是现在如何从思维上剖析“一个智能体系统”痛苦的教训结论 什么是智能体agent&#xff1f; 原文链接&#xff1a;https://windsurf.com/blog/what-is-an-agent 本文探讨了AI智能体的核心概…...

【多线程】Java 实现方式及其优缺点

以下是 Java 多线程实现方式及其优缺点的详细说明&#xff1a; 一、Java 多线程核心实现方式 1. 继承 Thread 类 public class MyThread extends Thread {Overridepublic void run() {System.out.println("Thread running: " Thread.currentThread().getName());}…...

Obsidian 数据可视化深度实践:用 DataviewJS 与 Charts 插件构建智能日报系统

Obsidian 数据可视化深度实践&#xff1a;用 DataviewJS 与 Charts 插件构建智能日报系统 一、核心架构解析 本系统基于 Obsidian 的 DataviewJS 和 Charts 插件&#xff0c;实现日报数据的自动采集、可视化分析及智能回溯功能&#xff08;系统架构原理见&#xff09;。其技术…...

Three.js 海量模型加载性能优化指南

一、性能瓶颈分析 1.1 常见性能杀手 问题类型典型表现影响范围Draw Call 爆炸每帧渲染调用超过1000次GPU 渲染性能内存占用过高浏览器进程内存突破1GB加载速度/崩溃风险模型文件过大单个GLB文件超过50MB网络传输时间几何数据冗余重复模型独立加载CPU/GPU资源浪费 1.2 性能监…...

6.4.3_有向无环图描述表达式

有向无环图&#xff1a; 有向图中不存在环即为有向无环图DAG图&#xff0c;即如下V0->V4->v3->V0或者V4->V1->v4就存在环不是有向无环图&#xff0c;即在一个路径中一个顶点不能出现2次&#xff1f; DAG描述表达式&#xff1a; 算术表达式用树来表示&#xff0…...

力扣第157场双周赛

1. 最大质数子字符串之和 给定一个字符串 s&#xff0c;找出可以由其 子字符串 组成的 3个最大的不同质数 的和。 返回这些质数的 总和 &#xff0c;如果少于 3 个不同的质数&#xff0c;则返回 所有 不同质数的和。 质数是大于 1 且只有两个因数的自然数&#xff1a;1和它本身…...

青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布

青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布 一、准备工作1. 创建和配置项目2. 编写代码和测试3. 文档注释 二、构建发布版本1. 构建优化后的可执行文件2. 静态链接&#xff08;可选&#xff09; 三、发布到 crates.io1. Crates.io核心功能使用方法特点最新动态 2…...

【HarmonyOS Next之旅】DevEco Studio使用指南(二十五) -> 端云一体化开发 -> 业务介绍(二)

目录 1 -> 工作原理 2 -> 约束与限制 2.1 -> 支持的设备 2.2 -> 支持的国家/地区 2.3 -> 支持的签名方式 3 -> 总结 3.1 -> 关键功能与工具 3.2 -> 开发流程 3.3 -> 典型场景与优化 3.4 -> 常见问题与解决 3.5 -> 总结 1 -> 工…...

LLaMA-Factory 微调模型与训练数据量对应关系

在使用LLaMA-Factory的LoRA技术微调1.5B和7B模型时&#xff0c;数据量需求主要取决于任务类型、数据质量以及模型规模。以下是基于现有研究和实践的具体分析&#xff1a; 一、数据量需求的核心影响因素 模型规模与数据量的关系 通常情况下&#xff0c;模型参数越多&#xff08…...

数据库与Redis数据一致性解决方案

在写数据时保证 Redis 和数据库数据一致,可采用以下方案,需根据业务场景权衡选择: 1. 先更新数据库,再更新 Redis 步骤: 写入 / 更新数据库数据。删除或更新 Redis 缓存。适用场景:读多写少,对缓存一致性要求不高(短暂不一致可接受)。风险:若第二步失败,导致缓存与…...

Spring Boot AI 之 Chat Client API 使用大全

ChatClient提供了一套流畅的API用于与AI模型交互,同时支持同步和流式两种编程模型。 流畅API包含构建Prompt组成元素的方法,这些Prompt将作为输入传递给AI模型。从API角度来看,Prompt由一系列消息组成,其中包含指导AI模型输出和行为的指令文本。 AI模型主要处理两类消息: …...

分身空间:手机分身多开工具,轻松实现多账号登录

分身空间是一款功能强大的手机分身多开工具APP&#xff0c;专为需要同时登录多个账号的用户设计。它支持多开各种游戏和软件&#xff0c;让用户可以轻松实现多账号同时在线&#xff0c;提升使用效率和体验。无论是社交软件、游戏还是办公应用&#xff0c;分身空间都能帮助你轻松…...

音视频之视频压缩及数字视频基础概念

系列文章&#xff1a; 1、音视频之视频压缩技术及数字视频综述 一、视频压缩编码技术综述&#xff1a; 1、信息化与视频通信&#xff1a; 什么是信息&#xff1a; 众所周知&#xff0c;人类社会的三大支柱是物质、能量和信息。具体而言&#xff0c;农业现代化的支柱是物质&…...

Ubuntu 24.04部署安装Honeyd蜜罐

&#x1f334; 前言 最近有个大作业&#xff0c;里面要求我们部署Hoenyd蜜罐&#xff0c;在网上搜了一通&#xff0c;发现相关的教程竟然少的可怜&#xff0c;即使有比较详细的教程&#xff0c;也是好几年前的了&#xff0c;跟着做一遍报一堆错&#xff0c;无奈之下&#xff0…...