包含红帽UBI的Artifactory

让你的容器变小并不总是适合你。它还必须使用组织所需的组件并与之协同工作。
Artifactory可用于DevOps作为一个高度可配置的,distroless映像提供了许多好处,包括减小大小和减少操作系统级漏洞的可能性。对于某些人来说,这还不够,需要特定的操作系统或自定义映像是组织的需求。当依赖于Red Hat Enterprise Linux的组织从传统vm切换到容器化平台,但仍然希望维护其Red Hat订阅提供的安全性、可靠性和支持时,通常会出现这种情况。
我们将向您展示基于红帽通用基础映像(UBI)创建您自己的Artifactory Docker映像是多么容易,以及您为什么要这样做。
更新:如果你想要一个现成的图像,Red Hat UBI和Artifactory Pro Docker镜像可从Red Hat容器目录下载.如果您需要包含特定版本和/或附加组件的Docker映像,请遵循下面所示的过程。
为什么使用Red Hat Docker映像?
随着对可伸缩软件需求的增加和软件架构采用微服务方法,世界正在变得容器化。码头工人的图片是迈向容器化的一条有吸引力的道路,但它们也带来了许多旧技术的问题,如操作系统漏洞、未经测试的软件包等。组织选择Red Hat现有平台的相同原因仍然适用于容器化世界。
的红帽通用基础映像是专门为简化向能够在红帽企业Linux上运行的容器软件的过渡而设计的。它不仅面向付费用户;红帽UBI也可以被OSS许可下的软件生产商使用。
红帽UBI上的Artifactory
使用Red Hat UBI和Artifactory创建容器映像是通过Dockerfile完成的。我们将向你展示它需要的样子,并解释为什么。
在开始之前
要创建您的Red Hat基于ubi的Artifactory映像,您将需要以下:
- Docker客户端17.05及以上版本(我们使用18.09.2)
- 互联网接入
你还会想知道你想要使用不同产品的哪个版本,具体来说:hth华体会最新官方网站
- 的Artifactory版本.我们使用6.10.6,但您可以使用6.9.1及以上版本的任何版本。
- 的Artifactory版.我们使用PRO,但是你可以选择OSS或者CE
- 的Red Hat UBI版本.我们使用的是基于RHEL 8的UBI8。选择的版本必须是基于ubi7或ubi8的。
Dockerfile最佳实践
完整的示例如下所示,但让我们更详细地了解每个部分的功能。
FROM docker.bintray.io/jfrog/artifactory-pro:6.10.6 AS base
第一部分指定了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 .sh
在这里,我们准备映像并复制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= subscriber -manager wget USER $ARTIFACTORY_USER_NAME VOLUME ${ARTIFACTORY_DATA} VOLUME ${ARTIFACTORY_EXTRA_CONF} ENTRYPOINT ["/ ENTRYPOINT -artifactory.sh"]
最后一部分设置权限、卷和入口点。有一个命令,我们使用Red Hat包管理器来安装所需的工具。注意,我们使用包管理器with——disableplugin =订阅管理器,这是为了避免在没有活动订阅的机器上运行时出现警告。
完整的示例
#一个使用红帽Universal Base Image (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 #复制需要的文件系统from base (Artifactory image) 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的不同部分,是时候构建Dockerfile了。
- 将完整的示例复制到一个名为
Dockerfile在一个空目录中。Y你应该更新Artifactory到你想要的版本。 - 从命令行,将cd放入文件所在的目录
- 从命令行运行
Docker build -t mynamespace/jfrog/artifactory-pro:6.10.6-ubi.把名字改成对你有意义的名字。
好了,现在可以在Red Hat UBI上运行Artifactory映像了!
接下来是什么?
有了映像之后,需要在某个地方存储它并从那里部署它。我们可以建议作为你的Artifactory码头工人注册表?
您还需要一种构建新版本和保护外部依赖关系的方法,Artifactory可以帮助您解决这两个问题构建集成而且缓存功能.
当你完成之后,JFrog发布的每个Artifactory新版本都会启动一个自动构建,你的构建也会将自定义映像的新版本发布到Artifactory注册表中。这将帮助您在自己的Artifactory映像上更新和保护所有组件。
这就是创建和维护一个紧凑的、容器化的Artifactory版本所需要的,该版本运行在Red Hat经过验证的平台上。
