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

发布时间:2024年01月12日

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

一.前置条件

在开始之前,需要满足以下条件:

1. 一台运行 Linux 的服务器,可通过 SSH 连接。

2. 安装了 Docker 和 Docker Compose 的服务器。

3. 已经购买了域名,并且可以访问该域名。

二.搭建本地 Docker Registry

1. 创建文件夹:首先,在服务器上创建一个文件夹,用于存储证书和配置文件。例如,我们可以在 `root` 用户目录下创建一个名为 `docker-registry` 的文件夹。

2. 生成 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

```

3. 在客户端上推送镜像:现在,你可以在客户端上构建一个 Docker 镜像,并将其推送到 Registry:

```

docker build -t your-domain.com:5000/my-image .

docker push your-domain.com:5000/my-image

```

4. 在其他机器上拉取镜像:现在,你可以在其他机器上拉取该镜像。使用以下命令在其他机器上拉取镜像:

```

docker pull your-domain.com:5000/my-image

```

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

文章来源:https://blog.csdn.net/w708955424/article/details/135558582
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。