Ubuntu系统Docker安装与国内镜像加速配置全攻略
1. 项目概述与核心价值
最近在帮几个刚入行的朋友配置开发环境,发现他们卡在Ubuntu上安装Docker和配置国内镜像源这一步,浪费了不少时间。网上的教程要么太旧,要么步骤跳跃,缺了关键细节,照着做很容易出错。今天我就把这一整套流程,结合我这些年在不同版本Ubuntu上反复折腾的经验,从头到尾、掰开揉碎了讲清楚。这不仅仅是一个安装命令的集合,我会重点解释每个步骤背后的逻辑、为什么这么选,以及那些官方文档里不会写的“坑点”。无论你是刚接触Linux和容器技术的新手,还是需要快速为团队搭建标准环境的老手,这篇内容都能让你一次搞定,避免后续开发、部署中因环境问题带来的麻烦。
Docker作为容器化的事实标准,能极大提升开发、测试、部署的一致性和效率。但在国内网络环境下,直接从Docker官方仓库拉取镜像,速度慢不说,还经常超时失败。因此,更换为国内的镜像加速器,几乎是安装后的必做操作。整个过程涉及系统准备、软件源添加、安全校验、安装、用户权限配置、服务管理以及镜像源更换等多个环节,任何一个环节疏忽都可能导致安装失败或使用不畅。下面,我们就从最基础的准备工作开始。
2. 安装前的系统准备与要点解析
在敲下任何安装命令之前,花几分钟做好系统准备,能规避掉至少80%的后续问题。这个阶段的核心是确认系统状态和更新软件源索引。
2.1 系统版本与内核确认
首先,我们需要知道自己用的Ubuntu具体是哪个版本。虽然Docker对主流LTS版本支持都很好,但不同版本在软件包名称和系统库依赖上可能有细微差别。打开终端,执行:
lsb_release -a
你会看到类似
Description: Ubuntu 22.04.3 LTS
的输出。记下你的版本号,比如
22.04
或
20.04
。接下来,检查内核版本,Docker需要较新的内核来支持其底层特性:
uname -r
对于Ubuntu 20.04/22.04,其自带的内核版本完全满足Docker CE的要求。这一步主要是为了心里有数,如果是在非常老的系统上,可能需要先升级内核。
注意 :如果你是在虚拟机(如VMware、VirtualBox)或WSL2中运行Ubuntu,请务必确保已为虚拟机启用了虚拟化支持(如Intel VT-x/AMD-V)。这在物理机安装时通常是默认开启的,但在虚拟机软件中可能需要手动在设置里勾选。否则,Docker守护进程可能无法启动。
2.2 更新现有软件包与清理
在安装任何新软件之前,更新现有的软件包列表和已安装的包是一个好习惯。这能确保系统处于一个较新的稳定状态,减少依赖冲突。
sudo apt update
sudo apt upgrade -y
sudo apt update
并不会更新任何已安装的软件,它只是从配置的软件源服务器下载最新的软件包列表信息,刷新本地的索引。而
sudo apt upgrade -y
则是根据更新后的列表,升级所有可升级的已安装软件包。
-y
参数表示自动确认,避免中途需要手动输入“Y”。
有时候,系统里可能残留一些不再需要的依赖包,可以运行
sudo apt autoremove -y
来清理它们。但这不是安装Docker的必要步骤,可以视情况执行。
2.3 卸载可能的旧版本Docker
如果你的系统之前安装过旧版本的Docker(可能是
docker
、
docker.io
或
docker-engine
),为了避免冲突,最好先彻底清除它们。即使你是全新系统,执行以下命令也是安全的,如果没找到相关包,命令会安静地跳过。
sudo apt remove docker docker-engine docker.io containerd runc -y
注意,
apt remove
会移除软件包但可能保留配置文件。为了彻底清理,我们通常使用
purge
命令,或者像上面一样先
remove
,再手动删除残留的配置和数据目录(如
/var/lib/docker
)。但对于全新安装,通常
remove
就够了。执行后,可以用
docker --version
试试,如果提示“command not found”,说明清理干净了。
3. Docker安装的核心步骤与原理详解
Docker官方为Ubuntu/Debian系发行版提供了非常规范的安装仓库。通过添加官方仓库来安装,能确保我们获得经过充分测试的最新稳定版,并且便于后续通过系统包管理工具进行升级。这是目前最推荐的方式。
3.1 安装必要的工具包
这些工具包是后续步骤的基础依赖,它们本身不提供Docker功能,但却是安全、可靠地添加和管理软件源所必需的。
sudo apt install ca-certificates curl gnupg lsb-release -y
-
ca-certificates:包含了公认的证书颁发机构(CA)的证书,用于HTTPS连接时验证服务器身份。当我们从Docker官方仓库下载时,需要它来建立安全连接。 -
curl:一个强大的命令行工具,用于从网络服务器传输数据。我们将用它来下载Docker的GPG密钥和软件源定义文件。 -
gnupg:GNU Privacy Guard,用于加密和签名。我们需要它来处理和验证Docker官方提供的GPG密钥,确保下载的软件包未被篡改。 -
lsb-release:一个工具,可以帮助我们标准化地获取LSB(Linux标准基础)和发行版的具体信息。在配置软件源时,有时脚本会用它来获取系统版本。
3.2 添加Docker官方GPG密钥
GPG密钥是一种数字签名,用于验证软件包的完整性和来源。APT包管理器在从软件源下载包时,会使用对应的公钥来校验签名。如果签名校验失败,APT会拒绝安装,这是一种重要的安全机制。
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
我们来拆解这个命令:
-
sudo mkdir -p /etc/apt/keyrings:创建目录/etc/apt/keyrings,-p参数确保如果父目录不存在则一并创建。这是Ubuntu新版推荐存放第三方软件源密钥的位置。 -
curl -fsSL https://download.docker.com/linux/ubuntu/gpg:curl命令去下载Docker官方的GPG密钥文件。-
-f:静默失败,服务器返回错误时不会输出HTML错误页面。 -
-s:静默模式,不显示进度或错误信息。 -
-S:与-s结合,当失败时仍显示错误信息。 -
-L:如果服务器报告请求的页面已移动到其他位置,此选项会让curl自动重新请求新地址。
-
-
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg:将下载的密钥流通过管道传递给gpg命令处理。-
--dearmor:将ASCII格式的密钥(.asc文件)转换为二进制格式(.gpg文件),这是APT所期望的格式。 -
-o:指定输出文件路径,这里我们将处理后的二进制密钥保存到/etc/apt/keyrings/docker.gpg。
-
实操心得 :有时网络问题可能导致
curl下载密钥失败。如果这一步出错,可以多试几次,或者检查网络连接。也可以尝试使用wget替代curl进行下载,但后续的管道处理命令不变。
3.3 添加Docker的APT软件源
现在我们需要告诉APT包管理器,去哪里查找Docker的软件包。我们将创建一个源列表文件。
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
这个命令看起来很复杂,我们分段解释:
-
deb:表示这是一个二进制软件源(相对于源码源deb-src)。 -
[arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]:这是源的选项。-
arch=$(dpkg --print-architecture):动态获取当前系统的架构(如amd64,arm64),确保添加的源与你的CPU架构匹配。 -
signed-by=/etc/apt/keyrings/docker.gpg:明确指出验证这个源中软件包签名所使用的密钥文件路径。这是确保安全性的关键。
-
-
https://download.docker.com/linux/ubuntu:Docker官方为Ubuntu准备的软件仓库地址。 -
$(lsb_release -cs):动态获取当前Ubuntu的代号(Codename),例如jammy(22.04),focal(20.04)。这确保了添加的是对应你系统版本的仓库。 -
stable:指定使用稳定版仓库。Docker还提供test(测试版)和nightly(每日构建版)仓库,但生产环境强烈建议使用stable。 -
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null:将前面echo输出的整行内容,通过tee命令写入到/etc/apt/sources.list.d/docker.list文件中。/etc/apt/sources.list.d/目录是专门用于存放额外软件源列表的,这样管理起来更清晰,不会污染系统主源文件/etc/apt/sources.list。> /dev/null是为了不将内容在终端上再显示一遍。
3.4 更新源并安装Docker引擎
添加新源后,必须再次更新本地软件包索引,这样APT才能知道新源里有哪些可用的包。
sudo apt update
这次
apt update
会读取我们刚创建的
docker.list
文件,并从Docker官方仓库拉取包列表信息。如果看到输出中包含
Get: https://download.docker.com/linux/ubuntu ...
这样的行,说明源添加成功了。
现在,可以安装Docker引擎及其相关组件了:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
这里安装了四个核心包:
-
docker-ce:Docker Community Edition,即Docker社区版引擎,是核心守护进程。 -
docker-ce-cli:Docker命令行接口,我们用的docker命令就来自这个包。 -
containerd.io:一个行业标准的容器运行时,Docker引擎实际上是在它的基础上构建的。它是管理容器生命周期(创建、启动、停止、删除等)的核心组件。 -
docker-compose-plugin:这是Docker Compose的V2版本,它被集成到了Docker CLI中,通过docker compose命令使用。相比独立的docker-compose(V1),它功能更强,更新更及时,是官方推荐的方向。
安装过程可能会持续几分钟,取决于你的网速。安装完成后,Docker服务(
docker.service
)默认是未启动的,我们需要启动它并设置开机自启。
4. 安装后的关键配置与验证
安装完成只是第一步,让Docker以正确的方式运行起来,并验证其功能是否完好,同样重要。
4.1 启动Docker服务并设置自启
sudo systemctl start docker
sudo systemctl enable docker
-
sudo systemctl start docker:立即启动Docker守护进程。 -
sudo systemctl enable docker:将Docker服务设置为开机自动启动。这样即使服务器重启,Docker也会自动运行。
4.2 验证Docker安装是否成功
最直接的验证方法就是运行Docker的“Hello World”:
sudo docker run hello-world
这个命令会做以下几件事:
-
在本地查找名为
hello-world的镜像,如果没找到,会从默认的Docker Hub仓库拉取(pull)该镜像。 - 拉取成功后,基于该镜像创建一个新的容器并运行。
- 容器内运行一个简单的程序,输出一段欢迎信息,然后退出。
如果你看到类似以下输出,恭喜你,Docker安装和运行基本正常:
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
4.3 将当前用户加入docker组(关键步骤)
你可能注意到了,前面的验证命令用了
sudo
。默认情况下,只有
root
用户和
sudoers
有权限操作Docker守护进程。每次运行
docker
命令都要输入
sudo
非常麻烦,也不安全(相当于赋予了普通用户root权限)。
更安全、更方便的做法是将需要使用Docker的普通用户加入
docker
用户组。Docker守护进程启动时会创建一个Unix socket(通常是
/var/run/docker.sock
),这个socket文件的所有者是
root
,但所属组是
docker
。只要用户属于
docker
组,就有权限通过这个socket与守护进程通信。
sudo usermod -aG docker $USER
-
sudo usermod:修改用户属性的命令。 -
-aG:-a表示“追加”用户到组,而不是覆盖其现有的组列表;-G指定要追加到的组名。 -
docker:组名。 -
$USER:一个环境变量,代表当前登录的用户名。
非常重要 :执行这个命令后, 组权限的变更不会立即生效于当前已登录的会话 。你需要 完全退出当前终端,并重新登录 ,或者开启一个新的终端窗口,新的组权限才会被系统识别。
重新登录后,你可以运行
groups
命令查看当前用户所属的组,确认
docker
组是否在列表中。之后,你就可以不用
sudo
直接运行
docker
命令了:
docker run hello-world
注意事项 :将用户加入
docker组实质上是赋予该用户相当大的权限,因为通过Docker可以间接操作主机系统(例如挂载主机目录、启动特权容器等)。在生产服务器或多用户环境中,请谨慎操作,只将必要的用户加入该组。
5. 配置国内镜像加速器(核心优化)
这是解决国内拉取镜像慢、甚至失败问题的关键步骤。Docker守护进程的配置位于
/etc/docker/daemon.json
。如果这个文件不存在,我们可以创建它。
5.1 理解镜像加速器原理
Docker默认从Docker Hub(
registry-1.docker.io
)拉取镜像。镜像加速器(或称镜像仓库镜像)是一个代理服务,它缓存了Docker Hub上的热门镜像。当你的Docker客户端请求一个镜像时,请求会被重定向到国内的加速器服务器。如果加速器上有缓存,就直接返回,速度极快;如果没有,它会从Docker Hub拉取并缓存下来,下次再请求时就快了。
5.2 选择并配置镜像加速器地址
国内常用的公共镜像加速器服务商有:
-
Docker中国官方镜像
:
https://registry.docker-cn.com(已停止服务,勿用) -
中科大镜像源
:
https://docker.mirrors.ustc.edu.cn -
网易镜像源
:
https://hub-mirror.c.163.com - 阿里云镜像加速器 :需要注册阿里云账号,在容器镜像服务控制台获取专属加速地址,速度通常最快最稳定。
- 腾讯云镜像加速器 :类似阿里云,需要腾讯云账号。
这里以配置
中科大
和
网易
两个镜像源为例(可以配置多个,Docker会按顺序尝试)。使用你喜欢的文本编辑器(如
nano
或
vim
)创建或编辑配置文件:
sudo nano /etc/docker/daemon.json
在文件中输入以下内容(如果文件已存在,请确保JSON格式正确,可以将
registry-mirrors
项合并进去):
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
5.3 重启Docker服务并验证配置
修改配置后,必须重启Docker守护进程才能使配置生效。
sudo systemctl daemon-reload
sudo systemctl restart docker
-
sudo systemctl daemon-reload:重新加载systemd管理器的配置。当我们修改了某个服务的配置文件(虽然daemon.json不是直接的systemd service文件,但执行此命令是良好的习惯)。 -
sudo systemctl restart docker:重启Docker服务。
验证镜像加速器是否配置成功:
docker info
在输出信息中,找到
Registry Mirrors
部分,你应该能看到刚才配置的两个镜像地址。
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/
https://hub-mirror.c.163.com/
5.4 测试镜像拉取速度
现在可以测试一下拉取镜像的速度。我们拉取一个稍大的、常用的镜像进行对比(可以先尝试不配置加速器拉取,体验一下速度,但这里我们直接测试配置后的效果):
docker pull ubuntu:22.04
观察拉取速度。如果配置正确,你应该能感觉到速度比直连Docker Hub快很多。可以通过
docker images
查看已拉取的镜像。
实操心得 :不同的镜像加速器在不同时间、不同网络环境下速度可能有差异。如果你发现某个源速度不理想,可以编辑
/etc/docker/daemon.json,调整镜像源的顺序,或者替换成其他源(如阿里云专属加速地址)。配置多个镜像源的好处是,当一个源失败时,Docker会自动尝试下一个。
6. Docker Compose的安装与使用简介
虽然我们通过
docker-compose-plugin
已经安装了Compose V2,但很多老教程或脚本仍在使用独立的
docker-compose
(V1)命令。了解两者的关系和使用方式很有必要。
6.1 Docker Compose V1 vs V2
-
V1 (
docker-compose) :一个独立的Python脚本,通过pip安装或直接下载二进制文件。命令是docker-compose(带中划线)。 -
V2 (
docker compose) :作为Docker CLI的一个插件(Plugin)实现,随docker-compose-plugin包安装。命令是docker compose(空格)。
V2版本功能更强大,与Docker CLI集成更好(例如可以直接使用
docker scan
等),并且是Docker官方目前主推和积极维护的版本。我们之前安装的
docker-compose-plugin
就是V2。
6.2 验证Docker Compose安装
安装插件后,可以通过以下命令验证:
docker compose version
你应该能看到类似
Docker Compose version v2.24.5
的输出。这证明Compose插件已正确安装并集成。
6.3 基本使用示例
Docker Compose通过一个
docker-compose.yml
文件来定义和运行多容器应用。这里举个最简单的例子:创建一个
docker-compose.yml
文件,内容如下:
version: '3.8' # 指定Compose文件格式版本
services:
web:
image: nginx:alpine # 使用nginx镜像
ports:
- "80:80" # 将主机80端口映射到容器80端口
db:
image: redis:alpine # 使用redis镜像
在包含该文件的目录下,运行
docker compose up -d
,Compose就会自动拉取镜像(如果本地没有),并启动
web
和
db
两个服务。
-d
表示在后台运行。
其他常用命令:
-
docker compose down:停止并移除由up启动的所有容器、网络等。 -
docker compose ps:查看当前Compose项目运行中的服务状态。 -
docker compose logs [service-name]:查看指定服务的日志。
7. 常见问题与深度排查指南
即使按照步骤操作,你也可能会遇到一些问题。这里汇总了一些常见问题及其解决方法。
7.1 Docker服务启动失败
问题现象
:执行
sudo systemctl start docker
后无反应或报错,执行
sudo systemctl status docker
看到状态不是
active (running)
。
排查思路 :
-
检查详细日志
:
sudo journalctl -xu docker.service可以查看Docker服务的详细日志,通常错误信息会在这里显示。 -
检查内核模块
:Docker依赖于
overlay2存储驱动和iptables等内核功能。运行lsmod | grep overlay和lsmod | grep br_netfilter检查相关模块是否加载。如果没有,可以尝试sudo modprobe overlay和sudo modprobe br_netfilter手动加载。 -
检查
daemon.json配置 :如果刚修改过/etc/docker/daemon.json且格式错误(如缺少逗号、引号不匹配),会导致Docker无法启动。可以尝试暂时重命名或删除该文件,然后重启Docker,看是否能正常启动。如果能,说明问题出在配置文件上。可以使用jsonlint等工具验证JSON格式。 - 端口冲突 :Docker默认会监听一个Unix socket和可能的TCP端口(如果配置了)。确保没有其他程序占用了Docker要使用的端口。
7.2 拉取镜像速度依然很慢或失败
问题现象
:配置了镜像加速器后,
docker pull
速度没有改善,或者出现
net/http: TLS handshake timeout
等超时错误。
排查思路 :
-
确认配置生效
:再次运行
docker info,确认Registry Mirrors下有你配置的地址。如果没有,检查daemon.json文件权限(应为root:root644),并确保执行了systemctl restart docker。 -
测试镜像源连通性
:使用
curl测试镜像源地址是否可达。例如:curl -I https://docker.mirrors.ustc.edu.cn/v2/。如果连接超时或返回错误,可能是该镜像源暂时不稳定,或者你的网络无法访问。尝试更换其他镜像源。 -
使用
--verbose调试 :docker pull --verbose ubuntu:22.04可以输出更详细的拉取过程,看到具体在哪一步卡住或报错。 -
尝试阿里云/腾讯云专属加速器
:公共镜像源可能负载较高。注册阿里云或腾讯云(均有免费额度),获取个人专属的加速器地址,速度和稳定性通常更有保障。阿里云加速器地址格式类似
https://xxxx.mirror.aliyuncs.com。
7.3 用户加入docker组后仍需要sudo
问题现象
:执行
usermod
命令并重新登录后,运行
docker ps
仍提示
permission denied
。
排查思路 :
-
确认组信息已更新
:运行
groups命令,查看输出中是否包含docker。如果不包含,可能是没有重新登录。 务必关闭所有终端窗口,并重新SSH登录或启动新的终端会话 。 -
检查Docker socket权限
:运行
ls -l /var/run/docker.sock,查看文件权限。应该类似srw-rw---- 1 root docker 0 ...。重点是所属组是否为docker,以及组权限是否有读写(rw-)。如果不是,可以尝试sudo chgrp docker /var/run/docker.sock修正组归属。 - 检查用户会话的组列表 :有时图形界面登录或某些终端环境不会完全刷新组信息。可以尝试完全注销图形界面再登录,或者新开一个登录会话。
7.4 磁盘空间不足问题
问题现象
:拉取镜像或运行容器时提示
no space left on device
。
排查思路
:
Docker默认将所有镜像、容器、卷等数据存储在
/var/lib/docker
目录下。随着使用,这个目录会越来越大。
-
查看磁盘使用
:
df -h查看根分区或/var分区的使用情况。sudo du -sh /var/lib/docker查看Docker数据目录的具体大小。 -
清理无用资源
:
-
docker system prune:清理所有已停止的容器、未被任何容器使用的网络、构建缓存(dangling images)。 谨慎使用,确保没有需要的数据 。 -
docker system prune -a:更激进的清理,会额外删除所有未被容器使用的镜像(不仅仅是dangling images)。 -
docker volume prune:清理未被任何容器使用的卷。
-
-
迁移Docker数据目录
:如果
/var分区确实太小,可以考虑将Docker的数据目录迁移到更大的磁盘分区上。这需要停止Docker服务,移动数据,并修改Docker的启动配置(如daemon.json中的data-root参数),步骤较为复杂,操作前务必备份。
7.5 防火墙与SELinux/AppArmor
问题现象 :容器无法访问外部网络,或宿主机无法访问容器暴露的端口。
排查思路 :
-
Ubuntu防火墙 (UFW)
:如果启用了UFW,Docker会自动配置一些规则,但有时仍需手动放行。检查UFW状态:
sudo ufw status。如果需要,可以为特定端口添加规则,例如sudo ufw allow 80/tcp。 -
iptables
:Docker大量使用iptables来做容器网络隔离和端口映射。不正确的iptables规则可能会干扰Docker。除非你非常了解,否则不要随意手动修改Docker创建的链(前缀为
DOCKER的链)。如果网络出现问题,可以尝试重启Docker服务(sudo systemctl restart docker),它会重新配置iptables规则。 -
AppArmor
:Ubuntu默认启用AppArmor,Docker会为容器生成默认的AppArmor配置文件。通常不需要干预。如果某个容器需要特殊权限,可能在运行时会遇到AppArmor拒绝日志。可以在
docker run时使用--security-opt apparmor=unconfined临时禁用(不推荐生产环境),或者自定义AppArmor策略。
8. 进阶配置与维护建议
完成基础安装和配置后,还有一些优化和日常维护的点值得关注。
8.1 配置Docker日志驱动与大小限制
默认情况下,容器日志会以JSON文件形式存储在宿主机的
/var/lib/docker/containers/
目录下,且没有大小限制,长期运行可能占用大量磁盘空间。可以在
/etc/docker/daemon.json
中配置日志驱动和选项:
{
"registry-mirrors": [...], // 你之前的镜像源配置
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
这样配置后,每个容器的日志文件最大为10MB,最多保留3个文件(如
container-id-json.log
,
container-id-json.log.1
,
container-id-json.log.2
),旧的日志文件会被自动删除。修改后同样需要重启Docker服务。
8.2 设置容器时区
默认情况下,容器内时区可能是UTC。要让容器使用宿主机的时区(例如Asia/Shanghai),可以在运行容器时挂载时区文件:
docker run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro your-image
或者在
docker-compose.yml
中配置:
services:
your-service:
image: your-image
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
8.3 定期更新Docker
为了获得新功能、性能改进和安全补丁,建议定期更新Docker。由于我们是通过APT仓库安装的,更新非常简单:
sudo apt update
sudo apt upgrade
这个命令会更新系统中所有已安装的包,包括Docker。如果你想只更新Docker相关包,可以使用
sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io docker-compose-plugin
。
8.4 备份与恢复Docker数据
对于生产环境,定期备份Docker数据(尤其是自定义镜像、卷数据)至关重要。
-
镜像
:使用
docker save将镜像导出为tar文件进行备份,使用docker load恢复。 - 容器 :通常不直接备份运行中的容器,而是备份定义容器的Dockerfile或Compose文件,以及容器内产生的持久化数据(存储在卷中)。
-
卷
:卷是持久化数据存储的首选方式。备份卷数据,需要先停止使用该卷的容器,然后使用
tar或rsync等工具备份卷在宿主机上的实际目录(默认在/var/lib/docker/volumes/下)。更复杂的生产环境会考虑使用存储快照或专门的备份工具。
整个流程从系统检查到进阶维护,涵盖了在Ubuntu上部署Docker生产级环境的主要环节。最关键的是理解每个命令的目的和背后的原理,这样在遇到问题时才能自己排查。镜像源的配置是提升国内体验的立竿见影的一步,务必根据自身网络情况选择最合适的。最后,安全方面,妥善管理
docker
组用户权限和定期更新,是长期稳定运行的基础。
更多推荐
所有评论(0)