包含红帽UBI的Artifactory

把你的容器变小并不总是很适合你。它还必须使用并使用组织所需的组件。

Artifactory可用于DevOps作为一个高度可配置的,distroless映像提供了许多好处,包括减小大小和减少操作系统级漏洞的可能性。对于某些人来说,这还不够,对特定操作系统或自定义映像的需求是组织需求。当依赖Red Hat Enterprise Linux的组织从传统虚拟机切换到容器化平台,但仍然希望维护其Red Hat订阅提供的安全性、可靠性和支持时,通常会出现这种情况。

我们将向您展示基于Red Hat通用基础映像(UBI)创建您自己的Artifactory Docker映像是多么容易,以及您可能想要这样做的原因。

更新:如果你想要一个现成的形象,Red Hat UBI和Artifactory Pro Docker映像可以从Red Hat Container Catalog下载.如果您需要包含特定版本和/或其他组件的Docker映像,请按照下面所示的过程进行操作。

为什么是红帽Docker镜像?

随着对可伸缩软件需求的增加和软件架构采用微服务方法,世界正在变得容器化。码头工人的图片都是迈向容器化的一条诱人的道路,但它们也带来了许多旧技术的问题,比如操作系统漏洞、未经测试的软件包等。组织选择Red Hat及其现有平台的相同原因仍然适用于容器化的世界。

红帽通用基础映像专门设计用于简化向能够在Red Hat Enterprise Linux上运行的容器化软件的过渡。它也不只是针对付费用户;红帽UBI也可以在OSS许可下被软件生产商使用。

红帽UBI上的人工

使用Red Hat UBI和Artifactory创建容器映像是通过Dockerfile完成的。我们将向您展示它需要是什么样子,并解释原因。

开始之前

要创建基于Red Hat ubi的Artifactory映像,您将需要以下内容:

  1. Docker客户端17.05及以上版本(我们使用18.09.2)
  2. 互联网接入

您还需要知道您想使用的不同产品的版本,具体如下:hth华体会最新官方网站

  1. Artifactory版本.我们使用6.10.6,但您可以使用6.9.1及以上的任何版本。
  2. Artifactory版.我们使用PRO,但您可以选择OSS或CE
  3. 红帽UBI版本.我们使用基于RHEL 8的UBI8。您选择的版本必须是基于ubi7或ubi8的。

Dockerfile的最佳实践

下面提供了完整的示例,但是让我们更详细地了解每个部分的作用。

从docker.bintray.io/jfrog/artifactory-pro:6.10.6 AS基础

第一部分指定了Artifactory Docker镜像和这个新镜像所基于的版本。您可以更改版本(标签)和版本以满足您的需要。

从registry.access.redhat.com/ubi8

本节指定Red Hat UBI版本并为我们的映像设置操作系统。您可以在这里更改UBI的特定版本。你会注意到这是Dockerfile中的第二个FROM。我们正在利用Docker的多阶段构建特性

#环境所需Artifactory ENV ARTIFACTORY_USER_NAME = Artifactory \ ARTIFACTORY_USER_ID = 1030 \ ARTIFACTORY_HOME = / opt / jfrog / Artifactory \ ARTIFACTORY_DATA = / var / opt / jfrog / Artifactory \ ARTIFACTORY_EXTRA_CONF = / ARTIFACTORY_EXTRA_CONF \ RECOMMENDED_MAX_OPEN_FILES = 32000 \ MIN_MAX_OPEN_FILES = 10000 \ JAVA_HOME = / java / jdk-11.0.2 + 9 \ RECOMMENDED_MAX_OPEN_PROCESSES = 1024 #复制必要的文件系统从基地(Artifactory图像)复制——从=基地/ opt / jfrog / opt / jfrog副本——从=基地/var/opt/jfrog/artifactory /var/opt/jfrog/artifactory COPY——from=base /artifactory_extra_conf /artifactory_extra_conf COPY——from=base /entrypoint-artifactory.sh /entrypoint-artifactory.sh COPY——from=base /java /java COPY——from=base /tmp/plugins /tmp/plugins . conf

在这里,我们准备映像并复制Artifactory应用程序和配置文件。请注意,这将导入Java二进制文件,但这也是可定制的

运行useradd -M -s /usr/sbin/nologin \——uid ${ARTIFACTORY_USER_ID} \——USER -group ${ARTIFACTORY_USER_NAME} && \ chown -R ${ARTIFACTORY_USER_NAME}:${ARTIFACTORY_USER_NAME} ${ARTIFACTORY_HOME} ${ARTIFACTORY_EXTRA_CONF} ${ARTIFACTORY_DATA} /tmp/plugins && \ yum install -y——disableplugin=subscription-manager wget USER $ARTIFACTORY_USER_NAME VOLUME ${ARTIFACTORY_DATA} VOLUME ${ARTIFACTORY_EXTRA_CONF} ENTRYPOINT ["/ ENTRYPOINT -artifactory.sh"]

最后一部分设置权限、卷和入口点。这里有一个命令,我们使用Red Hat包管理器来安装所需的工具。注意,我们使用包管理器——disableplugin =订阅管理器,这是为了避免在没有活动订阅的机器上运行时出现警告。

完整的示例

一个使用红帽通用基础映像(UBI)定制Artifactory的例子。#使用Docker多级构建。#把Artifactory文件系统(包括Java为Linux x64) # Artifactory官方码头工人形象从docker.bintray.io / jfrog / artifactory-pro: 6.10.6基地#新图像基于registry.access.redhat.com/ubi registry.access.redhat.com/ubi8 #环境所需Artifactory ENV ARTIFACTORY_USER_NAME = Artifactory \ ARTIFACTORY_USER_ID = 1030 \ ARTIFACTORY_HOME = / opt / jfrog / Artifactory \ ARTIFACTORY_DATA = / var / opt / jfrog / Artifactory \ ARTIFACTORY_EXTRA_CONF = / ARTIFACTORY_EXTRA_CONF\ RECOMMENDED_MAX_OPEN_FILES=32000 \ MIN_MAX_OPEN_FILES=10000 \ JAVA_HOME=/java/jdk-11.0.2+9 \ RECOMMENDED_MAX_OPEN_PROCESSES=1024 #从base (Artifactory映像)复制所需的文件系统Copy——from=base /opt/jfrog/ opt/jfrog Copy——from=base /var/opt/jfrog/ Artifactory /var/opt/jfrog/ Artifactory Copy——from=base /artifactory_extra_conf /artifactory_extra_conf Copy——from=base /entrypoint-artifactory.sh /entrypoint-artifactory.sh Copy——from=base /java/ java Copy——from=base /tmp/plugins/tmp/plugins #创建用户修复文件系统所有权和安装所需的工具与百胜#注意- wget必须安装Artifactory HA运行useradd - m - s /usr/sbin/nologin \ $ {ARTIFACTORY_USER_ID} \ uid,次用户组$ {ARTIFACTORY_USER_NAME} & & \乔恩- r $ {ARTIFACTORY_USER_NAME}: $ {ARTIFACTORY_USER_NAME} $ {ARTIFACTORY_HOME} $ {ARTIFACTORY_EXTRA_CONF} $ {ARTIFACTORY_DATA} / tmp /插件& & \ Yum安装- y——disableplugin = subscription manager wget用户ARTIFACTORY_USER_NAME卷{ARTIFACTORY_DATA}美元体积${ARTIFACTORY_EXTRA_CONF} ENTRYPOINT ["/ ENTRYPOINT -artifactory.sh"]

建立形象

现在您已经了解了Dockerfile的不同部分,是时候构建它了。

  1. 将完整的示例复制到名为Dockerfile在一个空目录中。Y您应该将Artifactory的版本更新到您想要的版本。
  2. 从命令行,cd到文件所在的目录
  3. 从命令行运行Docker build -t mynamespace/jfrog/artifactory-pro:6.10.6-ubi把名字改得对你更有意义。

就是这样,现在可以在Red Hat UBI上运行Artifactory映像了!

接下来是什么?

现在您已经有了映像,您需要在某个地方存储它并部署它。我们可以建议作为你的工艺品。码头工人注册表

您还需要一种构建新版本和保护外部依赖的方法,Artifactory可以帮助您解决这两个问题构建集成缓存功能

当您完成后,自动构建将开始使用JFrog发布的Artifactory的每个新版本,并且您的构建将将自定义映像的新版本发布到Artifactory注册表。这将帮助您在自己的Artifactory映像上保持所有组件的更新和安全。

这就是创建和维护一个紧凑的、容器化的Artifactory版本所需要的,该版本运行在Red Hat经过验证的平台上。