到这里JFrog Repository容器镜像仓库的基本部署工作就完成了,后面自动化发布系统中的CI/CD流程将以此为基础实现Docker镜像的存储、分发!关注我后续的内容将向你介绍如何构建一套完整的CI/CD自动发布系统!
如上图所示,默认创建了一个RepositoryKey为docker-local的本地仓库。在实际工作场景中为了便于Docker镜像的管理,可以分别为同一代码空间的项目创建单独的镜像仓库,例如我们本书中所有的Spring Cloud实战项目创建一个单独镜像仓库,点击右上角“New LocalRepository”,如图所示:
从上图可以看到JFrogArtifactory支持多种类型的仓库,例如Maven私有仓库也可以通过JFrog Artifactory来进行配置,由于是社区版所以很多其他类型的仓库并未免费开放!这里我们只选择创建Docker镜像仓库,创建后效果如图所示:
依据步骤设置好管理员密码。之后会继续要求设置如订阅邮箱、访问网站域名、代理配置等信息,这里可以暂时忽略直接跳到仓库创建的页面,如图所示:
输入初始密码(admin/password)后,会继续跳转到管理员密码重置界面,如图所示:
完成上述操作后,如果容器运行成功,此时浏览器输入访问地址:http://127.0.0.1:8082,将会显示如图所示界面:
$ docker run --name jfrog-artifactory -d-v data_artifactory:/var/opt/jfrog/artifactory -p 8081:8081 -p 8082:8082docker.bintray.io/jfrog/artifactory-jcr:latest
3)、运行Docker容器,命令如下:
#切换到上述目录后执行数据卷创建命令 $ docker volume create data_artifactory
#创建数据目录 $ mkdir -p ~/docker/volume/artifactory
2)、创建数据卷。考虑到镜像仓库作为持久化存储服务,这里为其创建单独的数据卷,命令如下:
$ docker images
由于网络原因上述下载过程可能会比较慢,有条件的读者可以借助科学上网方式进行镜像获取。完成后可通过命令查看具体的镜像信息,如下:
$ docker pulldocker.bintray.io/jfrog/artifactory-jcr:latest
1)、获取最新JFrog Artifactory社区版Docker镜像,命令如下:
JFrog Artifactory支持多种仓库类型,除了Docker镜像仓库外还支持Maven、Npm等其他类型的仓库。在正式企业级环境中镜像仓库的部署要考虑高可用、扩展性等要求,关于这方面的部署方式可以参考其他官方文档,本环节为了方便演示将采用Docker的方式进行部署,具体步骤如下:
根据官方介绍JFrogArtifactory是目前全球唯一一个支持所有开发语言,任意维度的元数据检索、跨语言正反向解析,并拥有深度递归、支持多活异地灾备的企业级、高可用二进制制品管理仓库。这里的二进制制品是指构建过程的输出物,包括软件包、测试报告,应用配置文件等可在服务器上直接运行或可查看的二进制软件制品。
在现阶段主流的企业级私有镜像仓库构建方案中,比较流行的是:开源的企业级Docker镜像仓库——Harbor、以及商业镜像仓库——JFrog Artifactory。这两种Docker镜像仓库各自都有一定的市场,就作者所工作过的公司来说使用Harbor和JFrog Artifactory作为私有镜像仓库的都有,但就成熟度和功能性完整性来说JFrog Artifactory作为商业级解决方案会更具优势,所以目前国内有钱的互联网公司选择JFrog Artifactory作为企业级私有仓库的比较多,本文的主要内容是演示如何通过Docker的方式来快速部署JFrog Artifactory并将其作为Devops自动发布系统的私有镜像仓库。
而私有镜像仓库则是指部署在公司或组织内部,用于自身应用Docker镜像存储、分发的镜像仓库。在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI/CD流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。
镜像仓库作为Docker技术的核心组件之一,其主要作用就是负责镜像内容的存储和分发。Docker镜像仓库从使用范围来说分为“公有镜像仓库”和“私有镜像仓库”,公有镜像仓库是可以被任何人使用的,例如Docker公司维护的在线存储库Docker Hub以及部分云服务厂商(如阿里云)提供的在线Docker镜像库等,都属于公有镜像仓库的范畴。
JavaScript是一种广泛使用的编程语言,它被广泛应用于Web开发中,也可用于构建桌面和移动应用程序。与其他编程语言相比,JavaScript具有独特的特性,这些特性使得JavaScript成为一种特别适合Web应用程序开发的语言。
JavaScript是一种解释性语言,它不需要编译,可以直接在浏览器中执行。这使得JavaScript成为一种非常灵活的语言,可以动态地改变Web页面的外观和行为。
JavaScript还具有一种称为闭包的特性。闭包是指一个函数可以访问并操作其外部作用域中的变量。这种特性使得JavaScript代码可以编写得更简洁,同时也更容易理解。
在JavaScript中,对象是一种非常重要的概念。对象是一种复杂的数据类型,它可以包含属性和方法。JavaScript中的对象可以是预定义的也可以是自定义的。预定义的对象包括全局对象和内置对象,而自定义的对象则是由开发者根据需要创建的对象。
除此之外,JavaScript还具有一种被称为事件驱动的编程模型。这种模型是指当用户执行某个操作时,浏览器会自动触发相应的事件。开发者可以通过编写事件处理函数来响应这些事件,从而实现更加交互式和响应式的Web应用程序。
在实际的Web开发中,JavaScript还经常用于与后端服务器进行交互。通过使用JavaScript编写的AJAX代码,开发者可以实现无需刷新页面即可更新页面内容的功能。
总之,JavaScript是一种非常重要的编程语言,它在Web开发中扮演着至关重要的角色。深入了解JavaScript的特性和功能,将有助于开发者更好地理解和掌握这种语言,从而更加高效地开发出优秀的Web应用程序。