Docker安装由于网络问题很少能自己拉取成功,常用的方法有几种:
1、离线导出和导入
找到可以正常运行的服务器,使用docker save备份镜像,复制到目标机器后用docker load导入即可。
2、搭建私有仓库
参考之前的实践,在使用时要么替换docker位置,要么修改/etc/docker/daemon.json。这个方法需要把镜像存储在自己的服务器上。比起离线的好处是一次推送,可以多人使用,尤其在内网环境更加方便
搭建方法参考:
ubuntu 24搭建docker私有仓库-CSDN博客
3、使用Ubuntu 24.04搭建镜像仓库
3.1 环境准备
a)最好申请国外站点,比如腾讯云的新加坡站点,几十块一年,每月有1024G流量,自己使用足够了。
b)有自己的域名。https服务器需要证书,使用域名可以绑定申请
3.2 配置域名解析
域名注册解析方面,建议使用二级域名:docker,先配置docker的A记录解析到云主机,再配置“*记录”,类型为”CNAME”,记录值为“docker.自己的域名”
3.3 升级docker-compose
ubuntu 24.04手工升级docker-compose到2.28+
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Apply executable permissions to the binary
sudo chmod +x /usr/local/bin/docker-compose
# Verify the installation
docker-compose version
3.4 下载一键安装脚本并执行
可以试试直接执行:bash -c "$(curl -fsSL https://raw.githubusercontent.com/kubesre/docker-registry-mirrors/main/dockerproxy/install/DockerProxy_Install.sh)"
如果失败尝试下载到本地执行。
wget https://raw.githubusercontent.com/kubesre/docker-registry-mirrors/main/dockerproxy/install/DockerProxy_Install.sh
修改DockerProxy_Install.sh,执行替换“docker compose”为"docker-compose",使用chmod +x DockerProxy_Install.sh增加可执行权限
安装和配置过程,按提示操作即可。
务必确保安装前域名解析已经完成并在云主机和防火墙的443的端口已经放行。
3.5 安装日志
我的安装日志如下(域名已经做了临时处理,非正式域名)
ystem release:: Ubuntu
[INFO] System version: 24.04 LTS (Noble Numbat)
[INFO] System ID: ubuntu
[INFO] System ID Like: debian
[INFO] 内存资源充足。请继续.(31%)
[INFO] 防火墙已被禁用.
[INFO] 是否执行软件包安装? [y/n]: n
[WARN] 跳过软件包安装步骤。
[INFO] ====================== 安装Docker ======================
[INFO] docker 已安装,安装版本为:Docker version 24.0.7, build 24.0.7-0ubuntu4.1
Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[INFO] ======================= 开始安装DOCKER PROXY =======================
[+] Running 2/2
✔ Container gateway Started 13.0s
✔ Container crproxy Started 13.0s
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] ======================= 配置域名 =======================
[WARN] 网关域名是可以让你以增加前缀的方式拉取源仓库的镜像,配置前请确认域名的[@记录和*记录]已经解析到该服务器!
[INFO] 请输入域名(如:kubesre.xyz): docker.abc.com
[INFO] 正在为 docker.abc.com 申请ssl证书...
[INFO] docker.abc.com 域名配置成功!
[INFO] 是否配置常用仓库别名? [y/n]: y
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] ======================= 增加常用别名仓库 =======================
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 l5d.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 elastic.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 docker.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 gcr.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 ghcr.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 k8s-gcr.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 k8s.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 mcr.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 nvcr.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 quay.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 jujucharms.docker.abc.com 申请ssl证书...
[INFO] ======================= 检测DOCKER PROXY部署状态 =======================
[INFO] DOCKER PROXY 服务部署成功!
[INFO] 正在为 rocks-canonical.docker.abc.com 申请ssl证书...
[INFO] =================感谢您的耐心等待,安装已经完成==================
[INFO]
[INFO] 请用增加前缀 docker.abc.com 的方式拉取镜像
[INFO] 源镜像拉取地址: docker pull quay.io/argoproj/argocd:v2.11.0
[INFO] 增加前缀拉取地址:docker pull docker.abc.com/quay.io/argoproj/argocd:v2.11.0
[INFO]
[INFO]
[INFO] 你已经添加常用别名仓库,也可以使用替换前缀方式拉取镜像:
[INFO] 源镜像拉取地址: docker pull quay.io/argoproj/argocd:v2.11.0
[INFO] 替换前缀拉取地址:docker pull quay.docker.abc.com/argoproj/argocd:v2.11.0
[INFO]
[INFO]
[INFO] 别名仓库列表如下:
[INFO] 原仓库: cr.l5d.io 别名仓库:l5d.docker.abc.com
[INFO] 原仓库: docker.elastic.co 别名仓库:elastic.docker.abc.com
[INFO] 原仓库: docker.io 别名仓库:docker.docker.abc.com
[INFO] 原仓库: gcr.io 别名仓库:gcr.docker.abc.com
[INFO] 原仓库: ghcr.io 别名仓库:ghcr.docker.abc.com
[INFO] 原仓库: k8s.gcr.io 别名仓库:k8s-gcr.docker.abc.com
[INFO] 原仓库: registry.k8s.io 别名仓库:k8s.docker.abc.com
[INFO] 原仓库: mcr.microsoft.com 别名仓库:mcr.docker.abc.com
[INFO] 原仓库: nvcr.io 别名仓库:nvcr.docker.abc.com
[INFO] 原仓库: quay.io 别名仓库:quay.docker.abc.com
[INFO] 原仓库: registry.jujucharms.com 别名仓库:jujucharms.docker.abc.com
[INFO] 原仓库: rocks.canonical.com 别名仓库:rocks-canonical.docker.abc.com
[INFO]
[INFO] 代码仓库: https://github.com/kubesre/docker-registry-mirrors
[INFO]
[INFO] 如果使用的是云服务器,请在安全组中开放80,443端口
[INFO]
[INFO] ================================================================
4、使用,修改镜像服务器地址
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.your_domain_name"
]
}
这里需要替换为自己的域名。
刷新缓存
sudo systemctl daemon-reload
sudo systemctl restart docker
接着就可以正常使用了。
5、参考资料
官方文档:
docker-registry-mirrors/dockerproxy/README.md at main · kubesre/docker-registry-mirrors
使用一键脚本搭建自己的镜像加速仓库
https://cloud.tencent.com/developer/article/2428821