【实战演练】在 Docker 企业版中打造专属的私人镜像仓库-阿里云开发者社区

开发者社区> 阿里云容器服务 ACK> 正文
登录阅读全文

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

简介: 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

现在,您的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

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)

重启Docker守护进程

sudo systemctl restart docker

在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

登录到您的DTR实例

docker login <Your DTR hostname>

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

docker tag alpine:latest <Your DTR hostname>/admin/alpine:latest

将镜像上传到DTR

docker push <Your DTR hostname>/admin/alpine:latest

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

从DTR中下载镜像

docker pull <Your DTR hostname>/admin/alpine:latest

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云容器服务 ACK
使用钉钉扫一扫加入圈子
+ 订阅

云端最佳容器应用运行环境,安全、稳定、极致弹性

官方博客
官网链接