写在前面
与传统的虚拟机相比,使用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拥有很多很棒的镜像管理功能,例如镜像缓存、备份、扫描、签名,甚至是提供自动化的供给链策略。