ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何在Linux上搭建本地Docker Registry并实现远程连接

如何在Linux上搭建本地Docker Registry并实现远程连接

原创 Linux操作系统 作者:咕噜签名分发可爱多 时间:2025-09-25 17:20:13 0 删除 编辑

在Linux 上搭建本地 Docker Registry 并实现远程连接步骤如下:

安装Docker

更新软件库索引:sudo apt-get update - 此命令用于同步 Ubuntu 软件源服务器上的软件包列表,确保系统能够获取到最新的软件版本信息,为后续安装 Docker 做好准备。

安装必要包:sudo apt-get install apt-transport-https ca-certificates curl software-properties-common - 这些依赖包分别提供 HTTPS 传输支持( apt-transport-https )、证书认证( ca-certificates )、网络请求工具( curl )和软件源管理工具( software-properties-common ),是安装 Docker 的基础环境组件。

加入Docker 官方 GPG 密钥: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - 通过 curl 工具下载 Docker 官方的 GPG 公钥并添加到系统信任列表,用于验证 Docker 软件包的完整性和安全性,防止恶意软件注入。

加入Docker 软件库: sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $ le" - 将 Docker 官方软件源添加到系统的软件仓库列表中,确保后续能够直接从官方源安装经过验证的 Docker 版本,而非 Ubuntu 默认源中的旧版本。

再次更新软件库索引:sudo apt-get update - 添加 Docker 软件源后需要重新更新索引,使系统识别到新添加的软件仓库中的可用软件包,确保 Docker 安装包能够被正确检索。

安装Docker CE : sudo apt-get install docker-ce - 安装 Docker 社区版( Community Edition ),这是 Docker 官方提供的免费版本,包含了容器运行时、 Docker 引擎等核心组件,安装完成后 Docker 服务会自动启动。

搭建Docker Registry

拉取Docker Registry 镜像: docker pull registry:2 - 从 Docker Hub 拉取官方的 Registry 镜像(版本 2 ),这是搭建本地私有仓库的基础镜像,默认会下载最新的稳定版本 2.x 系列。

创建本地目录存储Registry 数据(可选但推荐): sudo mkdir -p /opt/registry/data - 使用 -p 参数确保递归创建目录,将 Registry 的镜像数据存储在宿主机的 /opt/registry/data 路径下,避免容器重启或删除时数据丢失,实现数据持久化管理。

运行Registry 容器: sudo docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry/data:/var/lib/registry registry:2 - -d 参数表示后台运行容器, -p 指定端口映射, --restart=always 确保容器随系统自动启动, --name 设置容器名称, -v 实现宿主机目录与容器内数据目录的挂载。

此命令启动名为 “registry” 的容器,将宿主机 5000 端口映射到容器 5000 端口,默认不加密,仅本地访问。

配置远程连接

若需远程连接且Registry 使用自签名证书,需对每台远程连接 Registry 的机器的 Docker Daemon 进行配置以信任自签名证书:

创建证书存放目录:sudo mkdir -p /etc/docker/certs.d/myregistry.com:5000 (将 “myregistry.com:5000” 替换为 Registry 实际域名和端口) - Docker 守护进程会自动在该目录下查找 CA 证书,目录命名格式必须为 “ 域名 : 端口 ” ,确保与 Registry 的访问地址严格对应。

复制自签名证书到上述目录:sudo cp certs/domain.crt /etc/docker/certs.d/myregistry.com:5000/ca.crt - 需将自签名证书文件重命名为 ca.crt 并放置到指定目录, Docker 会将该证书视为可信根证书,用于验证 Registry 的 TLS 连接合法性。

重启Docker 服务: sudo service docker restart - 使 Docker 守护进程重新加载配置并应用证书信任设置,对于 systemd 系统,也可使用 sudo systemctl restart docker 命令。

若Registry 部署在内网环境中,可使用内网穿透工具(如 cpolar )实现公网访问:

安装cpolar :按照 cpolar 官方文档进行安装 - cpolar 是一款支持 HTTP/HTTPS 协议的内网穿透工具,提供免费版和付费版,可通过其官网获取对应 Linux 系统的安装脚本或二进制文件。

创建隧道:在cpolar 的 Web UI 管理界面中创建隧道,将本地 5000 端口映射到公网地址 - 隧道类型选择 “HTTP” ,本地地址填写 127.0.0.1:5000 ,端口类型可选择临时端口(免费版)或固定端口(付费版),设置完成后保存配置。

获取公网地址:隧道创建成功后,在cpolar 的在线隧道列表中查看生成的公网访问地址

使用公网地址访问Registry :

标记镜像:docker tag your-image myregistry.cpolar.io:5000/your-image (将 “myregistry.cpolar.io” 替换为实际的 cpolar 域名) - 镜像标记需遵循 “Registry 地址 / 镜像名称 : 标签 ” 格式,其中 Registry 地址必须与 cpolar 生成的公网域名一致,否则推送时会提示无法连接到仓库。

推送镜像:docker push myregistry.cpolar.io:5000/your-image

拉取镜像:docker pull myregistry.cpolar.io:5000/your-image

注意事项:

使用自签名证书时,需确保Docker 守护进程信任该证书,否则会遇到 TLS 握手错误 - 常见错误提示为 “x509: certificate signed by unknown authority” ,解决方法包括正确配置证书目录或在 Docker 配置文件中添加 insecure-registries (不推荐生产环境使用)。

确保防火墙规则允许外部访问5000 端口 - 对于 UFW 防火墙,可使用 sudo ufw allow 5000/tcp 命令开放端口;对于 iptables ,可使用 sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT 命令,同时需检查云服务器安全组规则(如有)。

若希望避免每次配置新机器都需要复制证书,可考虑使用权威CA 签发的证书 - 如 Let's Encrypt 提供免费 SSL 证书,通过 Certbot 工具可自动申请和续期,配置后所有客户端无需手动添加信任,适用于生产环境或多客户端场景。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70034712/viewspace-3096545/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-10-23

  • 博文量
    85
  • 访问量
    83396