镜像加速与缓存
镜像拉取速度和缓存复用影响部署效率,下面介绍配置方法。
镜像加速器
配置 Mirror
JSON
// /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
重启生效:
Bash
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置
Bash
# 查看加速器配置
docker info | grep -A 5 "Registry Mirrors"
# 输出
Registry Mirrors:
https://mirror.ccs.tencentyun.com/
https://registry.docker-cn.com/
缓存机制
层缓存复用
Bash
# 第一次拉取
docker pull nginx:latest
# 下载所有层
# 第二次拉取相同标签
docker pull nginx:latest
# 复用本地缓存,无需下载
跨镜像复用
Bash
# 基于相同基础镜像的镜像共享层
docker pull ubuntu:22.04 # 基础层缓存
docker pull my-app:1.0 # 如果基于 ubuntu:22.04,复用基础层
构建缓存
dockerfile
# Dockerfile
FROM ubuntu:22.04 # 使用本地缓存
RUN apt-get update # 首次构建下载
COPY . /app
RUN npm install
Bash
# 首次构建
docker build -t my-app .
# 下载基础镜像,执行所有指令
# 第二次构建(Dockerfile 未变)
docker build -t my-app .
# 复用所有缓存层
破坏缓存
Bash
# 禁用缓存
docker build --no-cache -t my-app .
# 破坏特定点之后的缓存
# Dockerfile 中某条指令变化,后续所有层重建
缓存清理
Bash
# 查看缓存使用
docker system df
# 清理构建缓存
docker builder prune
# 清理所有未使用资源
docker system prune
# 清理所有未使用的镜像
docker image prune -a
代理配置
JSON
// /etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://proxy.example.com:8080",
"https-proxy": "http://proxy.example.com:8080",
"no-proxy": "*.local,127.0.0.1"
}
}
离线迁移
Bash
# 保存镜像为文件
docker save nginx:latest > nginx.tar
# 传输到离线机器
scp nginx.tar user@remote:~
# 加载镜像
docker load < nginx.tar
要点总结
- registry-mirrors 配置镜像加速器,提升国内拉取速度
- Docker 层缓存复用,相同层不重复下载
- 构建缓存利用 Dockerfile 指令缓存,变化破坏后续缓存
docker builder prune清理构建缓存,docker system prune全面清理- 离线环境使用
docker save/load迁移镜像
📝 发现内容有误?点击此处直接编辑