在 Linux 上设置并运行容器注册表
Docker 容器镜像由名为 DockerRegistry 的应用程序交付和存储。注册表整合了容器镜像并加快了开发人员的构建时间。虚拟化提供了相同的运行时环境,但创建映像可能需要付出努力。使用容器时容器编排是成功的。本教程介绍如何设置私有 Docker 注册表并将其配置为公共访问。
Jfrog 容器注册表:它是什么?
所有容器部署、管理、扩展和网络方面都通过容器编排实现自动化。因此,控制大量 Linux® 服务器和容器的企业可能会从容器编排中获利。
Kubernetes 最大、最好的注册表是 JFrog 的容器注册表,它处理 Helm Chart 存储库和 Docker 容器。将 Docker 镜像组织在一个位置,消除 Docker Hub 的限制和保留困难。 JFrog 与您的开发环境连接,以安全、准确、快速地访问外部 Docker 容器注册表。在本教程中,您将在 Linux 上构建自己的 Docker 注册表。
在 Linux 上安装和配置私有 Docker 注册表
步骤01:
命令行上的 Docker 对于入门和测试容器很有帮助,但对于需要许多并行实例的大型部署来说,它会变得很麻烦。
Docker Compose 可以使用一个 .yml 文件来设置每个容器的设置以及与其他容器交互所需的数据。您可以向组成应用程序的每个部分发出指令,并使用 docker-compose 命令行工具集中管理它们。
您将使用 Docker Compose 来管理 Docker 注册表,因为它是一个具有多个组件的程序。您必须创建一个 docker-compose.yml 文件来指定注册表及其数据的存储位置,然后才能启动注册表实例。
这些设置将保存在主服务器上的 docker-registry 目录中。运行命令来创建它:
mkdir ~/docker-registry
将其导航至:
cd ~/docker 注册表
然后,创建一个名为 data 的子文件夹,用于存储注册表的照片:
MKDIR数据
通过运行以下命令,创建并打开名为 docker-compose.yml 的文件:
纳米 docker-compose.yml
以下代码定义了 Docker 注册表的基本实例:
版本:‘3’
服务:
注册表:
图片:注册表:2
端口:
– “5000:5000”
环境:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY:/数据
卷:
– ./数据:/数据
您可以通过运行“docker-compose up”命令来初始化配置。
步骤02:
作为要求的一部分,您已在您的域上配置了 HTTPS。因此,您只需设置 Nginx 将流量从您的域引导到注册表容器,以便在那里公开受保护的 Docker 注册表。
您的服务器配置已在文件 /etc/nginx/sites-available/您的域中设置。运行此命令进行修改:
sudo nano /etc/nginx/sites-available/your_domain
您的注册表将在端口 5000 上等待,因此,您必须将所有流量转发到那里。为了从主机获取有关请求本身的更多信息,您还需要在路由到注册表的请求中包含标头。应将以下行添加到位置块中以代替当前内容:
地点/{
# 不允许来自 docker 1.5 及更早版本的连接
# docker pre-1.6.0 没有正确设置 ping 上的用户代理,捕获“Go *”用户代理
if ($http_user_agent ~ “^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$” ) {
返回404;
}
proxy_pass http://localhost:5000;
proxy_set_header 主机 $http_host; # 为了 docker 客户端需要
proxy_set_header X-真实 IP $remote_addr; # 传递真实客户端的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
完成后,您可以保存并关闭文件并重新启动 Nginx 以应用更改。配置端口转发后,您将进一步加强注册表的安全性。
步骤03:
您可以使用 HTTP 身份验证来限制对 Docker 注册表的访问,方法是在 Nginx 中对其管理的网站进行配置。为此,您将使用 htpasswd 构建身份验证文件并向其中添加有效的用户名和密码组合。
通过安装apache2-utils包,您可以获得htpasswd工具。单击此处了解如何安装该软件包的步骤。
身份验证文件和凭据应保存在 /docker-registry/auth。通过运行创建它:
mkdir ~/docker-registry/auth
导航到它:
cd ~/docker-registry/auth
将 username 替换为您在创建第一个用户时希望使用的用户名。 bcrypt 算法是 Docker 需要的一种算法,-B 选项命令使用它:
htpasswd -Bcregistry.password 用户名
当询问时,提供密码;然后,registry.password 将与凭据组合一起添加。
既然已经建立了凭据列表,您应该更改 docker-compose.yml 以指示 Docker 使用您准备的文件来对用户进行身份验证。可以通过运行以下命令打开该文件:
Nano ~/docker-registry/docker-compose.yml
步骤04:
通过告诉 Docker Compose 保持运行,您可以确保注册表容器在每次系统启动或从崩溃中恢复时启动。这是通过在注册表块下输入以下命令来完成的:
重新启动:始终
步骤05:
您必须确保您的注册表可以处理巨大的文件上传,然后才能将图片推送到其中。
Nginx 默认的文件上传大小限制为 1 m,这对于 Docker 镜像来说太小了。要提高它,您必须更改 /etc/nginx/nginx.conf 主配置文件。运行此命令进行修改:
须藤纳米 /etc/nginx/nginx.conf
将以下行添加到 http 部分:
client_max_body_size 16384m;
保存文件并重新启动 Nginx。
最后的想法
您的 Docker 注册表已启动并正在运行。首先,您在本指南中创建了自己的 Docker 注册表。然后,您配置了 SSL 和 HTTP 身份验证并安装了所需的要求。了解有关备份 Docker 容器的更多信息。
本地 Docker 镜像保存在 JFrog 提供的私有 Kubernetes 注册表中。它使您能够连接到每个应用程序的每个层,并对代码到集群的流程拥有完全的控制和可见性。