nexus docker docker login push pull

https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/


创建一个私有Docker注册表


目录显示 ]

NEXUS-和泊坞窗

Nexus 3和Docker - 我无法使用Nexus 3徽标,所以我自己画了一个!

在本文中,我将展示如何使用Sonatype的Nexus Repository Manager 3.0 OSS 设置私人Docker注册表可能还有其他的指南,但是如果没有别的我为自己写作的话。
我建立一个私人Docker注册表的主要动机是:

  • Docker镜像的分布。
    这可能是多台计算机之间或组织内部的小规模。
  • 限制Docker镜像的分发。
    虽然我更愿意在DockerHub上提供我的Docker镜像,但有些情况下,我觉得Docker镜像尚未准备好分发给更多的观众。
    在一个组织中,将Docker映像部署到公共注册表可能不合适或不合适。
  • 在我的所有电脑上使用相同版本的Docker镜像。
    如果我在第一台计算机上构建Docker镜像,然后在稍后的某个时间点在另一台计算机上创建Docker镜像,那么这些镜像之间可能存在差异。这可能是由于创建映像时使用的软件库更新,操作系统补丁等引起的。这种差异可能很微妙,但我更愿意消除尽可能多的潜在混淆来源,甚至可能出现的错误。

由于我已经在摆弄Docker,我将使用SonatypeDocker镜像在Docker容器中运行Nexus 3 OSS 

准备工作

作为一个例子,我将把官方Tomcat Docker镜像复制到我自己的私人Docker注册表中。为此,我们首先需要取出Tomcat映像:

此外,我将在主机中创建一个目录来保存Nexus 3数据和日志,如Nexus 3映像文档中所述:

创建一个Docker组合配置

为了简化Nexus 3 Docker容器的启动,我将使用Docker Compose。

  • 转到“nexus3”目录。
    这是我们在上述准备中创建的“data”目录的父目录。
  • 使用以下内容创建一个名为“docker-compose.yml”的文件:

注意:

  • 两个端口暴露。
    在端口8081上,Nexus 3的Web GUI将可用。Docker注册表API将暴露在端口8123上。后一个端口可能会根据需要进行更改,请记住相应地配置Nexus 3。
  • 共享目录“nexus-data”,映射到主目录“data”。
    该目录将包含Nexus 3的持久数据。

启动Nexus

在终端窗口中,Docker快速入门终端(如果您使用的是Docker Toolbox,当前目录是我们之前创建的docker-compose.yml文件的目录),请使用以下命令启动Nexus 3 Repository管理器:

如果您在Linux中运行Docker,则必须在上述命令之前添加“sudo”。
然后使用logs命令查看Nexus Docker容器中的日志:

一段时间后,Nexus日志中会显示与此相似的日志输出,表示Nexus已成功启动:

在Nexus 3中创建一个Docker Registry

随着Nexus 3的启动和运行,我们现在应该能够创建一个Docker注册表。

  • 找到Docker主机的IP地址。
    如果您在Mac OS X或Windows上运行Docker,可以使用命令“docker-machine ip default”获取它。
    如果您在Linux上运行Docker,它将与主机的IP地址相同,可以使用“ifconfig”命令找到它。
    在我的情况下,Docker主机的IP地址是192.168.1.72。
  • 在Web浏览器中打开URL [Docker主机IP地址]:8081。
  • 登录到Nexus 3. 
    单击右上角的登录按钮并使用用户名“admin”和密码“admin123”。如果这些凭据已更改,请检查DockerHub中Nexus 3 Docker映像页面
  • 单击齿轮转到服务器管理和配置部分。
  • 点击存储库。
    docker_reg_nexus3_2
  • 点击创建存储库按钮。
    docker_reg_nexus3_3
  • 在存储库类型列表中,选择“docker(hosted)”作为新注册表的类型。
    docker_reg_nexus3_4
  • 配置Docker存储库。
    给存储库一个名字 - 在我的情况下是“IvansDockerRepo”。
    确保在线复选框被选中。
    选中存储库连接器下的HTTP复选框并输入端口号8123. 
    选中启用Docker V1 API复选框。
    在Blob商店下选择默认。
  • 点击创建存储库按钮。
    docker_reg_nexus3_5

私人Docker注册表现在可以使用了。

从客户端登录到私有Docker注册表

在我们可以从Docker客户端与Docker注册表进行交互之前,我们需要登录到注册表。

- 允许不安全的连接Windows和OS X

由于我们已经在普通的HTTP端点上公开了私有Docker注册表,因此我们需要配置作为客户端的Docker守护进程作为私有Docker注册中心,以允许不安全的连接。这在所有环境中都不是可取的,但为了这个例子,不安全的连接很简单并且足够了。

  • 找到包含密钥“InsecureRegistry”的Docker config.json文件。
    在Mac OS X上,假设Docker机器的名称是“default”,它位于〜/ .docker / machine / machines / default目录中。
    在Windows上,再次假设Docker机器的名称是“default”,它位于C:\ Users \ [您的用户名] \。docker \ machine \ machines \ default目录中。
    可以在其中找到“InsecureRegistry”密钥的配置文件部分如下所示:
  • 将Nexus 3 GUI公开的IP连同端口号8123一起插入到“InsecureRegistry”键的值中。在我的情况下,修改后的键值将如下所示:
  • 如果您使用Docker for Mac或Windows Beta:
    New方法(请确保您有最新的更新):可以在Docker首选项中的高级选项卡中配置不安全的注册表。
    旧方法:使用此内容创建一个名为config.json的文件(根据需要替换IP地址):
    {“存储驱动程序”:” AUFS”,”调试”:真”不安全 - 登记”:[‘192.168.1.72:8123’]}
    使用commando设置配置:
    皮纳塔设置守护进程@ conf.json
  • 重新启动Docker机器。

- 允许不安全的连接Linux

为了允许来自在Linux上运行的Docker客户端的不安全连接:

  • 编辑文件/ etc / default / docker 添加以下行:
    DOCKER_OPTS =“$ DOCKER_OPTS -insecure-registry = [Nexus3 Docker host IP]:8123”
  • centos7:


此时就可以

进入私人码头注册表

您现在应该可以使用以下命令(根据需要替换IP地址)使用用户名“admin”和密码“admin123”登录到Nexus 3注册表,两者均不带引号:

结果应该是一条消息,说明登录成功。

将Docker镜像推送到私有注册表

在早些时候拉出正式的Tomcat映像并登录到我们的私有注册表后,我们现在已准备好将Tomcat Docker映像推送到我们的注册表中。在下面的说明中,根据需要替换Docker注册表的IP地址。

  • 标记图像。
    码头标记tomcat:latest 192.168.1.72:8123/ivans_tomcat:latest 
    这将告诉Docker将用于Docker镜像的新名称以及我们稍后将推送镜像的注册表的IP地址。
  • 将图像推送到我们的私人注册表。
    docker push 192.168.1.72:8123/ivans_tomcat:latest
  • 在浏览器中打开URL http://192.168.1.72:8081。
  • 点击左侧浏览列中的组件类别。
  • 在出现的组件列表中单击名为“IvansDockerRepo”的Docker注册表。
    docker_reg_nexus3_6
  • 在IvansDockerRepo中的组件列表中,应该有一个名称为“ivans_tomcat”的单个条目。
    docker_reg_nexus3_7
  • 要拉图像,也许在另一台计算机上,请使用以下命令。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值