Ubuntu下搭建自己的Docker镜像仓库

时间:2024-10-30 08:41:23

Docker安装由于网络问题很少能自己拉取成功,常用的方法有几种:

1、离线导出和导入

     找到可以正常运行的服务器,使用docker save备份镜像,复制到目标机器后用docker load导入即可。

2、搭建私有仓库

      参考之前的实践,在使用时要么替换docker位置,要么修改/etc/docker/daemon.json。这个方法需要把镜像存储在自己的服务器上。比起离线的好处是一次推送,可以多人使用,尤其在内网环境更加方便

     搭建方法参考:

     ubuntu 24搭建docker私有仓库-****博客 ​​​​​​​

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