设置Docker存储库

2020年12月31日19:41:02 发表评论 73 次浏览

介绍

了解如何通过自托管的本地注册表或使用Docker Hub存储库存储Docker映像。这将允许你存储和组织Docker映像, 并在多个团队之间共享映像。

"注册表"与"存储库"

一种资料库是实际存储数据的地方。一种注册表是指向该数据的指针的集合。

例如, 图书馆的卡片目录是注册表你可以咨询以找到所需书籍的位置。图书馆的实际书架是资料库.

要求

  • Docker使用和命令的基础知识。
  • Docker已安装并在你的系统上运行。
  • 互联网连接。

如果你设置了一个自托管的存储库并选择使其可以从Internet访问, 则还需要:

  • 正常运行的域名(URL)。
  • SSL证书.

设置自托管Docker注册表

Docker提供内置注册表服务器。注册表服务器在容器中运行, 你可以使用泊坞窗运行命令。

例如, 要启动名为" my-registry"的注册表服务器, 命令将是:

sudo docker run -d -p 5000:5000 --name my-registry registry:2

注意:如果使用防火墙, 则可能需要打开对端口5000的访问。

将映像推送到自托管注册表

使用自托管注册表的第一步是使用docker tag命令为该注册表标记Docker映像:

sudo docker tag [image name] localhost:5000/[image name]

例如, 重新标记图像-对于你的自托管注册表, 命令为:

sudo docker tag my-nginx localhost:5000/my-nginx

然后, 你可以使用以下命令将此映像推送到注册表:

sudo docker push localhost:5000/[image name]

为了推送我们在上面的示例中创建的图像, 命令将是:

sudo docker push localhost:5000/my-nginx

从你的自托管注册表中提取图像

从注册表中提取图像的命令是:

sudo docker pull localhost:5000/[image name]

例如, 要提取我们在上面的示例中创建的图像, 命令将是:

sudo docker pull localhost:5000/my-nginx

停止和删除你的自托管注册表

如果你犯了一个错误或者只是想停止并删除你创建的注册表, 以及在那里存储的所有图像, 请使用以下命令:

sudo docker stop [repository name] && docker rm -v [repository name]

例如, 要停止和删除我们在上面创建的名为的注册表我的注册表该命令将是:

sudo docker stop my-registry && docker rm -v my-registry

允许外部访问你的自托管注册表

在开始共享私有注册表之前, 你需要使用SSL证书.

创建一个名为证书在你的Docker根目录中。在大多数系统上, 这将是/ var / lib / docker目录:

sudo mkdir /var/lib/docker/certs

命名你的SSL证书(cert)文件domain.crt和你的SSL密钥文件domain.key。将两个文件都放入/ var / lib / docker / certs目录。

如果要更新现有的自托管注册表, 则需要使用以下命令将其停止:

sudo docker stop [repository name]

使用以下命令启动(或重新启动)自托管注册表:

sudo docker run -d -p 5000:5000 --restart=always --name my-registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

从另一台主机访问你的自托管注册表

要从其他主机访问注册表, 请使用[你的域]:5000 / [图片名称].

例如, 要推送名为-首先转到example.com上托管的注册表, 你需要标记图像:

sudo docker tag my-nginx example.com:5000/my-nginx

然后, 你可以使用以下命令推送图像:

sudo docker push example.com:5000/ubuntu

要从该注册表中提取相同的图像, 请使用以下命令:

sudo docker pull example.com:5000/ubuntu

设置Docker Hub存储库

的Docker Hub网站是在云中存储和组织Docker映像的便捷场所。你可以使用此站点托管你自己的公共或私有存储库, 管理用户对存储库的访问, 以及从任何在线位置访问存储库。

官方图片

Docker Hub还是浏览公共Docker映像的绝佳场所。请注意, 只有标记为"官方"的存储库包含映像的正式版本。

官方回购

我们建议你仅拉并运行官方Docker映像。

创建一个Docker Hub帐户

首先, 你需要设置一个Docker Hub帐户。在帐户上填写你的帐户详细信息Docker Hub主网站然后点击注册.

填写帐户详细信息

检查你的电子邮件帐户是否有消息以完成你的帐户激活, 然后登录该站点。

登录该网站

每个Docker Hub帐户都可以创建许多免费的公共存储库。每个帐户还带有一个免费的私人存储库。你可以按月购买更多的私人存储库。

建立组织和团队

Docker Hub允许你设置组织和团队以管理大量用户。如果你有几个不同的人组, 并且需要分别管理他们的权限, 这将很方便。

三种访问级别是:

  • 读取(只能拉图像, 不能推图像)
  • 写(可以拉和推图像)
  • 管理员(可以拉和推图像, 以及添加和删除用户)

建立组织

在主Docker Hub仪表板上, 单击建立组织.

单击创建组织

填写组织的详细信息, 然后单击创造.

填写组织详细信息

每个组织都从一个默认团队开始, 该团队称为拥有者。你会自动添加到拥有者创建组织时。

向其他人添加拥有者, 填写其Docker Hub用户名, 然后单击蓝色+.

添加所有者

将你的组织设置为公开或私有

组织是public默认。将你的组织设置为private, 在主要组织页面上单击设定值.

点击设置

请点击private, 然后点击保存.

设为私人

新增团队

要添加团队, 请从下拉菜单中选择你的组织名称(如果尚未选择), 然后单击队伍.

添加团队

在"团队"页面上, 单击新增团队.

建立团队

填写团队名称和描述, 然后单击加.

建立团队

注意:每次将某人添加到团队时, 他们都会收到Docker Hub的电子邮件, 提醒他们更改。

创建一个Docker Hub仓库

在Docker Hub仪表板中, 单击创建存储库.

创建仓库

填写存储库详细信息(请务必设置能见度下拉至publicorprivate), 然后点击创造.

回购详情

在下一页上, 你将找到有关新存储库的详细信息, 包括码头工人拉图像命令。

回购已创建

设置存储库团队访问权限

要按团队设置对存储库的访问权限, 请单击合作者.

合作者

在我们的示例中, 我们有两个团队:

  • 质量检查部门jdoesoftwareqa需要读取(但不写入)图像访问权限。
  • 开发商jdoesoftwaredev需要对图像具有读写权限的用户。

无需质量检查即可将更新的图像推送到存储库, 我们希望防止它们无意间这样做。但是, 开发人员将需要完全访问存储库。

出于安全性考虑, 最好将所有Docker Hub用户至少分为两组:一组具有只读访问权限, 而另一组具有读/写访问权限。

要设置小组的访问权限, 请从下拉菜单中选择小组和访问级别, 然后单击新增团队.

设置访问权限

从命令行访问Docker Hub存储库

要从命令行访问Docker Hub存储库, 你必须首先使用你在网站上创建的登录名向Docker Hub进行身份验证:

sudo docker login

系统将要求你提供Docker Hub登录名, 密码和电子邮件地址。

从命令行登录

登录后, 你将可以通过以下方式访问Docker Hub存储库码头工人推和码头工人拉命令。

将映像推送到Docker Hub存储库

要将映像上传(推送)到你的Docker Hub存储库, 你必须首先准备该映像。它将需要:

  • 你的Docker Hub用户名或Docker Hub组织的名称。
  • Docker Hub存储库的名称。
  • 可选:版本标记。 (如果未指定标签, 则默认为"最新"。)

你可以使用以下命令重命名现有图像:

sudo docker tag [existing image name or ID] [Docker Hub username or organization]/[repository name]:[tag]

例如, 如果Docker Hub用户do想上传当前名为我的Ubuntu测试到名为的Docker Hub存储库ubuntu测试并标记它的版本1.0, 则首先必须使用以下命令将图像重命名:

sudo docker tag my-ubuntu-test jdoe/ubuntu-test:1.0

Ifdo正计划将其推送到jdoe软件组织, 那么命令将是:

sudo docker tag my-ubuntu-test jdoesoftware/ubuntu-test:1.0

你可以通过使用以下命令列出系统上的所有Docker映像来验证该映像是否已正确重命名:

sudo docker images

接下来, 你可以使用以下命令将映像推送到存储库:

sudo docker push [Docker Hub username or organization name]/[repository name]:[tag]

为了推送我们在上一个示例中重命名的图像, 命令将是:

sudo docker push jdoe/ubuntu-test:1.0

要么:

sudo docker push jdoesoftware/ubuntu-test:1.0

要验证该映像是否已推送到Docker Hub, 请转到Docker Hub仪表板, 然后为你的存储库单击Details。

点击详情

在存储库页面上, 单击标签。

点击标签

这将列出已推送到存储库的版本以及上次更新时间。

显示标签

从Docker Hub存储库中提取映像

从Docker Hub存储库中提取映像的命令显示在Docker Hub网站的存储库页面上。

拉命令

该命令是:

sudo docker pull [your Hub username or organization name]/[your Hub repository name]:[tag]

例如, 拉动图像jdoe / ubuntu-test:1.0我们在上一节中将其推送到集线器, 命令将是:

sudo docker pull jdoe/ubuntu-test:1.0

要么:

sudo docker pull jdoesoftware/ubuntu-test:1.0

你可以通过使用以下命令列出系统上的所有Docker映像来验证该映像是否已正确重命名:

sudo docker images
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: