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

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

时间:2024-01-12 18:34:32浏览次数:29  
标签:domain certs Registry Linux docker Docker registry

Hello,大家好我是咕噜铁蛋!当今,Docker 已成为了广受欢迎的容器化解决方案。我们需要掌握 Docker 相关的技能,其中之一就是如何在 Linux 上搭建本地 Docker Registry 并实现远程连接。我也通过科技手段整理了些,今天我将详细介绍如何在 Linux 上搭建本地 Docker Registry,并实现远程连接,帮助读者更好地掌握 Docker 知识。 一.前置条件 在开始之前,需要满足以下条件:

  1. 一台运行 Linux 的服务器,可通过 SSH 连接。
  2. 安装了 Docker 和 Docker Compose 的服务器。
  3. 已经购买了域名,并且可以访问该域名。 二.搭建本地 Docker Registry
  4. 创建文件夹:首先,在服务器上创建一个文件夹,用于存储证书和配置文件。例如,我们可以在 root 用户目录下创建一个名为 docker-registry 的文件夹。
  5. 生成 SSL 证书:接下来,我们需要生成 SSL 证书,以加密 Docker Registry 的通信。使用以下命令生成 SSL 证书:
mkdir certs && openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
    -x509 -days 365 -out certs/domain.crt

该命令将在 certs 目录下生成一个名为 domain.crt 的自签名 SSL 证书。 3. 创建配置文件:接下来,我们需要创建 Docker Registry 的配置文件。在 docker-registry 文件夹中创建 config.yml 文件,并添加以下内容:

version: 0.1
log:
  level: debug
  formatter: text
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  tls:
    certificate: /certs/domain.crt
    key: /certs/domain.key

该配置文件指定了 Registry 的存储路径、监听地址和 SSL 证书路径等信息。 4. 启动 Registry:使用以下命令启动 Docker Registry:

docker run -d -p 5000:5000 --restart=always \
  --name registry \
  -v /root/docker-registry:/certs \
  -v /opt/docker-registry:/var/lib/registry \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

该命令将启动一个 Docker Registry 容器,并将 docker-registry 文件夹映射到容器内的 /certs 目录,将 Registry 的数据目录 /var/lib/registry 映射到宿主机的 /opt/docker-registry 目录,并设置 SSL 证书和密钥路径。 5. 验证 Registry:现在,你可以通过 https://your-domain.com:5000/v2/_catalog 访问 Docker Registry。如果一切正常,你将看到一个空的镜像列表。 三.实现远程连接 默认情况下,Docker 只支持本地 Registry,不能从远程访问 Registry。为了实现远程连接,我们需要执行以下操作:

  1. 配置 Docker 客户端:在需要访问 Registry 的客户端上,使用以下命令配置 Docker 客户端:
mkdir -p /etc/docker/certs.d/your-domain.com:5000/
cp /path/to/domain.crt /etc/docker/certs.d/your-domain.com:5000/ca.crt

该命令将 SSL 证书复制到客户端,并将其添加到 Docker 的信任列表中。 2. 重启 Docker 客户端:重启 Docker 客户端,以使更改生效:

systemctl restart docker
  1. 在客户端上推送镜像:现在,你可以在客户端上构建一个 Docker 镜像,并将其推送到 Registry:
docker build -t your-domain.com:5000/my-image .
docker push your-domain.com:5000/my-image
  1. 在其他机器上拉取镜像:现在,你可以在其他机器上拉取该镜像。使用以下命令在其他机器上拉取镜像:
docker pull your-domain.com:5000/my-image

,我们了解到了如何在 Linux 上搭建 Docker Registry,并实现远程连接。我希望这些内容能对您在 Docker 相关技术学习和实践中提供一些帮助和指导。如果您有任何问题或疑问,请随时在评论区留言,我将尽力为您解答。祝您在 Docker 的学习和实践中取得更多的进展!

标签:domain,certs,Registry,Linux,docker,Docker,registry
From: https://blog.51cto.com/u_16305396/9220307

相关文章

  • Linux 上使用 MemoryAnalyzer 分析 OOM 原因
    导读:笔者最近生产环境出现了OOM,通过借助MemoryAnalyzer对生成的堆转储文件进行分析并找到内存泄露的原因,这里记录做下分享。关于MemoryAnalyzer笔者采用 EclipseMemoryAnalyzerOpenSourceProject|TheEclipseFoundation (简称“MAT‘)。它是一款强大的Java堆转储分......
  • 一个脚本打包三个平台的linux,mac,windows的golang程序
    一个脚本打包三个平台的linux,mac,windows的golang程序:#!/bin/bash#设置变量APP_NAME="atmp"VERSION="1.0.0"BUILD_TIME=$(date+%Y-%m-%d_%H:%M:%S)BUILD_DIR="bin"PLATFORMS=("linux/amd64""windows/amd64""darwin/amd64&......
  • BCLinux 8.2安装配置图解教程--龙蜥社区国产移动云系统
    社区镜像下载地址:https://openanolis.cn/download安装参考地址:https://www.osyunwei.com/archives/13017.html1安装系统界面说明:InstallBigCloudEnterpriseLinux8  #安装Testthismedia&installBigCloudEnterprise Linux8#测试安装文件并安装Troubleshooti......
  • linux 如何对外开放端口号
    在Linux服务器上,如果要让外界通过网络连接到服务器,就需要开放相应的端口号。本文将介绍如何在Linux系统中对外开放端口号。步骤:以下是在Linux系统中对外开放端口号的步骤:1.确定要开放的端口号。2.检查端口号是否已经被使用。3.配置防火墙规则以允许入站流量。4.重启防火墙服务。代......
  • Linux系统日志管理
    一、系统日志的作用系统日志记录了系统运行过程中产生的各种信息,如错误信息、警告信息、提示信息等。这些信息对于了解系统的运行状态、诊断故障、保障系统安全等方面具有重要作用。当系统出现问题时,通过查看日志可以快速定位故障原因,便于进行修复。同时,日志可以帮助系统管理员了解......
  • mac下golang打包到Linux上执行报错:No such file or directory
    本地mac打包golang二进制文件到linux服务器报错:-bash:./atmp-linux:Nosuchfileordirectory很奇怪,明明可执行文件在当前目录下,为什么会找不到呢?使用列出动态库依赖的lld(listdynamicdependencies)命令查看了下,发现:lddatmp-linux发现报错:./atmp-linux:errorwhile......
  • 【一文搞定】Linux面试必备20个常用命令
    第一章什么是linux多用户,多任务,支持多线程和多CPU的操作系统,linux的应用领域:免费,稳定,高效的,一般运行在大型服务器上常用目录介绍:[root@localhost~]#的含义:@之前的是当前登录的用户localhost是主机名字~当前所在的位置(所在的目录)~家目录/根目录#的位置是用户标识#是超级用户$普......
  • 在Linux下配置Apache HTTP服务器
    在Linux的世界里,如果说有什么比解决各种“神秘”的故障更让人头疼,那一定就是配置ApacheHTTP服务器了。这不是因为Apache有什么问题,而是因为配置它简直就像解谜游戏,一不留神就会让你陷入无尽的纠结。首先,你需要知道的是,Apache并不是一个“喂我配置文件,我就能运行”的服务。它需要你......
  • 使用Nginx作为反向代理服务器在Linux中的最佳实践
    在Linux环境下,Nginx因其高效性能、稳定性以及丰富的功能集而广泛用于作为反向代理服务器。以下是在Linux中使用Nginx作为反向代理服务器的最佳实践:1.安装与配置首先,确保你的Linux发行版已经安装了Nginx。大多数Linux发行版都提供了Nginx的包管理工具。例如,在基于Debian的系统上,你......
  • Linux Shell接收键盘输入
    1.read命令格式read[选项][变量名]选项:-p“提示信息”:在等待read输入时,输出提示信息-t“秒数”:read命令会一致等待用户输入,使用此选项可以指定等待时间-n“字符数”:read命令只接受指定的字符数,就会执行-s:隐藏输入的数据,适用于机密信息的......