引言
docker 的快速部署与高效运行依赖于两大核心环节:基础环境搭建与镜像生态优化。本期博文从零开始,系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置,确保环境稳定可用;第二部分深入 镜像源的配置策略与故障排查,解决国内网络环境下的镜像拉取瓶颈。通过遵循本文指引,各位观众老爷将掌握 docker 环境初始化、权限管理及镜像加速的全流程技能,为容器化开发运维构建高效、可靠的基础平台。
最后,如果大家喜欢我的创作风格,请大家多多关注up主,你们的支持就是我创作最大的动力!如果各位观众老爷觉得我哪些地方需要改进,请一定在评论区告诉我,马上改!在此感谢大家了。
希望大家能够关注up主,助力冲击100粉丝,我一定给各位观众老爷带来高质量的知识干货!!!
各位观众老爷,本文通俗易懂,快速熟悉Docker,收藏本文,关注up不迷路,后续将持续分享Docker纯干货(请观众老爷放心,绝对又干又通俗易懂)。请多多关注、收藏、评论,评论区等你~~~
一、docker 服务安装与基础配置
本章节将涵盖从服务初始化到日常使用的关键步骤。内容包括 docker 服务的启动与开机自启设置,确保环境持久可用;同时详解 免 sudo 运行 docker 的权限配置方案,通过用户组管理提升操作便捷性。通过遵循本章指引,各位观众老爷可快速搭建 docker 基础环境,解决权限依赖问题,为后续容器化操作奠定高效、安全的基础。
1.1 启动docker服务
1.1.1 初次启动docker
- 检查状态(确认是否运行)
sudo systemctl status docker
# 退出请按 q
如下图所示,这是我的docker状态:
- 启动docker服务
sudo systemctl start docker
- 停止docker服务(如需)
sudo systemctl stop docker
注释: 以下是使用表格形式整理的 sudo systemctl start docker
命令解析
部分 | 作用 | 补充说明 |
---|---|---|
sudo | 以超级用户(root)权限执行后续命令。 | 普通用户需通过 sudo 提升权限才能管理系统服务。 |
systemctl | Systemd 系统和服务管理器的控制工具,用于管理服务、挂载点等。 | Systemd 是现代 Linux 发行版的默认初始化系统,负责启动和管理进程。 |
start | 启动指定的服务单元。 | 其他常用操作: - stop :停止服务- restart :重启服务- enable :开机自启- status :查看状态 |
docker | 目标服务单元名称(对应 docker.service 文件),启动 Docker 守护进程。 | 服务文件路径:/usr/lib/systemd/system/docker.service ,定义依赖、环境等配置。 |
这部分内容关于 Ubuntu系统服务管理 的详细分析解读,已经给各位观众老爷细致解读过,请参考 Ubuntu教学系列(六):权限控制与系统管理 。
1.1.2 设置开机自启动
- 设置docker开机自启动
sudo systemctl enable docker
运行此命令后,docker服务将在每次系统重启时自动启动。
- 可再次查看服务状态
sudo systemctl is-enabled docker
如果输出为 enabled,则表示 docker 服务已成功配置为在启动时自动运行。具体如下图所示。
1.2 免 sudo
运行 docker 及验证
1.2.1 添加 docker 用户组( 可选,推荐!)
- 添加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
的问题。
- 生效方法
修改用户组后,需 重新登录 或 重启系统 使组权限生效。提供两种方法:
-
注销重新登录
无需重启整个系统,仅需:
# 注销当前会话(图形界面或终端)
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 镜像源是什么?有什么作用
- 镜像源
镜像源是 Docker 镜像的代理仓库,充当用户与 Docker Hub(默认官方源)之间的缓存中介。
- 其核心作用
-
加速镜像拉取:通过地理就近的服务器分发镜像,减少跨国网络延迟。
-
提升可用性:在官方源不可用时,仍可通过镜像源获取缓存内容。
-
企业级管控:支持搭建私有镜像源,统一管理内部镜像依赖(如 Harbor 私有仓库)。
2.1.2 为什么要修改默认镜像源
Docker 默认从境外 Docker Hub 拉取镜像,国内用户直接访问时面临以下问题:
-
速度瓶颈:跨境网络带宽限制,导致下载耗时(如 Ubuntu 基础镜像可能需数十分钟)。
-
匿名限流:Docker Hub 对未登录用户实施严格的请求限流策略,频繁操作易触发拦截。
-
稳定性风险:国际链路波动或防火墙干扰可能导致连接中断。
使用国内镜像源可针对性解决上述痛点,显著优化体验。
2.2 配置镜像源
注释:这个小节涉及关于 文件方面的操作,不熟悉的观众老爷,请参考 Ubuntu系列教学(五):文件与目录的精准操控,有非常详细的解读。系统服务 方面的内容,上面已经给出链接,这里就不再赘述。
2.2.1 准备工作
- 确认 docker 服务已启动(可跳过,已经设置自启动)
# 检查 Docker 服务状态
sudo systemctl status docker
# 若未运行,手动启动
sudo systemctl start docker
- 备份 Docker 配置文件(可选,推荐)
docker 的镜像源配置就是修改Ubuntu系统路径 /etc/docker/
下的 daemon.json
文件。
# 备份配置文件
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
2.2.2 修改 daemon.json
配置文件
- 创建或编辑配置文件
# 使用 vim 编辑器
sudo vim /etc/docker/daemon.json
# 使用 nano 编辑器
sudo nano /etc/docker/daemon.json
- 添加镜像源地址
{
"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 和 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