【实战演练】在 Docker 企业版中打造专属的私人镜像仓库

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker企业版的镜像仓库Docker Trusted Registry(DTR),DTR拥有很多很棒的镜像管理功能。

写在前面

与传统的虚拟机相比,使用Docker真的是一件很酷的事,您可以轻松的移动Docker镜像。如果您已经使用了Docker,那么可以肯定您是从Docker Hub中下载的镜像。Docker Hub是Docker基于云的镜像仓库,拥有数以万计的Docker镜像可供用户选择。如果您正在开发自己的软件并创建了自己的Docker镜像,尤其是当您的镜像拥有专利许可证,或是您构建的系统具有复杂的持续集成(CI)过程时,那么您就一定想要打造一个私人的Docker镜像仓库了。

Docker企业版包含了Docker Trusted Registry(DTR),这是一个具有安全镜像管理功能的高可用性的镜像仓库,您可以放心的在自己的数据中心内,或者在基于云的基础架构上构建、运行它。在接下来的几周内,我们将介绍DTR是如何成为提供安全、可重复和一致性软件交付链链的关键组成部分。今天,您可以通过这篇演示案例来开启您的Docker之旅。下面将为您介绍安装的详细步骤。

安装Docker企业版

DTR在通用控制层(UCP)之上运行,所以让我们开始安装一个单节点集群吧!如果你已经有了自己的UCP集群,那么您可以跳过这一步。在docker主机上,运行以下命令:

下载并安装UCP

docker run -it –rm -v /var/run/docker.sock:/var/run/docker.sock –name ucp docker/ucp:latest install
AI 代码解读

现在,您的UCP已经完成安装并且可以启动、运行了,接下来在安装DTR之前我们还应该做一些其它的准备工作。打开您刚刚安装UCP中的浏览器,您可以在日志的末尾处发现一个链接。如果您已经拥有Docker企业版许可证,那么您就可以通过用户界面上传许可证。如果您没有许可证,那么就需要您访问Docker Store,在那里您可以获得一个免费的30天试用版。

一旦您获得了授权许可,您可能就想要更改运行UCP的端口了。由于这是一个单节点集群,因此DTR和UCP将要使用相同的TCP(传输控制协议)端口来运行其Web服务。如果您拥有一个以上节点的UCP集群,这可能就不成问题了,因为DTR将寻找一个具有所需空闲端口的节点。在UCP内部,点击Admin Settings(管理设置)——Cluster Configuration(集群配置),并将Controller Port(控制端口)更改为5443这样的设定。

安装DTR

我们将安装一个简单的单节点的DTR实例。如果您正在为生产用途设置DTR,那么您可能需要设置高可用性(HA)模式,这需要使用不同类型的存储,例如基于云对象的存储或NFS。由于这是一个单节点实例,我们将使用默认的本地存储。

首先我们需要下载DTR引导程序镜像。这个引导程序镜像非常小巧而且自己包含安装程序,它会自动连接UCP并建立全部所需的容器、卷和逻辑网络来启动并运行DTR。

使用以下命令下载并运行DTR引导程序:

下载并运行DTR引导程序

docker run -it –rm docker/dtr:latest install –ucp-insecure-tls
AI 代码解读

DTR引导镜像会让您进行一些设置,例如UCP安装的URL和UCP管理员的用户名和密码。您只需要一两分钟就可以把所有的DTR图像下载下来并完成全部的设置。

安全通信

一旦所有的东西都运行起来了,您就可以准备从镜像仓库中上传和下载镜像了。在我们开始这一步之前,让我们先来设置TLS证书,以便我们可以安全地与DTR进行通信。

在Linux上,我们可以使用以下命令:

从DTR下载CA证书(如果不能使用curl,则可以使用wget)

DTR_HOSTNAME=<Your DTR hostname>

curl -k https://$(DTR_HOSTNAME)/ca > $(DTR_HOSTNAME).crt

sudo mkdir /etc/docker/certs.d/$(DTR_HOSTNAME)

sudo cp $(DTR_HOSTNAME) /etc/docker/certs.d/$(DTR_HOSTNAME)
AI 代码解读

重启Docker守护进程

sudo systemctl restart docker
AI 代码解读

在Docker for Mac和Windows平台上,我们设置的客户端的方式将有些许不同。进入Settings(设置)——守护进程(Daemon),然后在 Insecure Registries(不安全镜像仓库)部分,输入你的DTR主机名。点击Apply(应用),您的Docker守护进程就可以重新启动了。

上传和下载镜像

我们现在需要建立一个镜像仓库来保存镜像。这与Docker Hub有点不同,如果在执行docker push时没有发现镜像仓库的话,Docker Hub会自动创建一个仓库。要创建镜像仓库,请将浏览器指向https:// <您的DTR主机名>,然后在出现提示时使用您的管理员凭证进行登录。如果您向UCP添加了许可证,该许可证将自动由DTR提取。如果没有,请现在上传您的许可证。

进入之后,点击“New Repository”按钮并创建一个新的镜像仓库。现在让我们回到shell并输入以下命令:

下载最新版本的Alpine Linux

docker pull alpine:latest
AI 代码解读

登录到您的DTR实例

docker login <Your DTR hostname>
AI 代码解读

为Alpine添加标签使其能够上传到DTR

docker tag alpine:latest <Your DTR hostname>/admin/alpine:latest
AI 代码解读

将镜像上传到DTR

docker push <Your DTR hostname>/admin/alpine:latest
AI 代码解读

就是这样,我们刚刚下载了一个最新的Alpine Linux镜像,重新标记它以便我们可以将其存储在DTR中,然后将其上传到我们的私人镜像仓库中。如果您想将该镜像下载到不同的Docker引擎中,请按照上面所示设置您的DTR证书,然后输入以下命令:

从DTR中下载镜像

docker pull <Your DTR hostname>/admin/alpine:latest
AI 代码解读

DTR拥有很多很棒的镜像管理功能,例如镜像缓存、备份、扫描、签名,甚至是提供自动化的供给链策略。

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
打赏
0
0
0
0
79136
分享
相关文章
docker环境安装kafka/Flink/clickhouse镜像
通过上述步骤和示例,您可以系统地了解如何使用Docker Compose安装和配置Kafka、Flink和ClickHouse,并进行基本的验证操作。希望这些内容对您的学习和工作有所帮助。
109 28
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
233 70
Docker Image即Docker镜像
Docker 镜像是 Docker 容器的基础,包含了运行应用程序所需的一切。通过 Dockerfile 可以方便地创建自定义镜像,并且利用 Docker 提供的命令可以轻松管理和使用这些镜像。掌握 Docker 镜像的创建、管理和使用,是进行容器化应用开发和部署的基础技能。希望本文能帮助读者更好地理解 Docker 镜像的概念和操作,提高开发和运维效率。
23 6
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
41 1
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
125 26
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
95 27
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
189 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
82 22
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
136 29
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像

相关产品

  • 容器镜像服务
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等