Docker映像的强大之处在于它们轻巧且可移植-它们可以在系统之间自由移动。 您可以轻松创建一组标准映像,将它们存储在网络上的存储库中,并在整个组织中共享它们。 或者,您可以转向Docker Inc.,该公司创建了各种机制来在公共和私有共享Docker容器映像。
其中最突出的是Docker Hub,这是该公司对容器映像的公开交换。 许多开源项目在那里提供了其Docker映像的正式版本,这使其成为在现有容器的基础上创建新容器的便捷起点,或者只是获取容器的库存版本来快速启动项目。 您可以免费获得一个自己的私有Docker Hub存储库。
探索Docker Hub
探索Docker Hub的最简单方法是在Web上浏览它 。 在Web界面中,您可以按名称,标签或描述搜索可公开获得的容器。 从那里,从Docker Hub下载,运行以及使用容器镜像所需的一切都包含在开源版本的Docker中(主要是docker pull
和docker push
命令)。
Docker Hub定价
从Docker Hub获取容器是免费的。 更重要的是,如果您想在Docker Hub上托管容器,并且需求适中,则也不必为此付费。 免费计划支持一个私有存储库和一个并行构建(稍后会详细介绍),对于单个开发人员而言通常就足够了。 定价的其他计划(更多的私人仓库,更多的并行编译)从$ 7至$ 100每个月范围。
另外,无论您使用什么层,Docker都不会对映像大小或拉取请求施加硬性限制。 就是说,任何大于几千兆字节的处理都将变得不切实际-既要维护,又要让其他人为他们的项目服务。
团队的Docker Hub组织
如果您将Docker Hub与其他人一起使用,则可以创建一个组织 ,该组织允许一群人共享特定的映像存储库。 可以将组织进一步细分为团队,每个团队都有自己的存储库特权集。 组织的所有者可以创建新的团队和存储库,并向其他用户分配存储库的读取,写入和管理权限。
请注意,Docker Hub要求组织名称的长度必须超过三个字符。 换句话说,您不能有一个名为“ dev”的组织。 显然,这是Docker无法解决的架构限制。
Docker Hub存储库
Docker Hub存储库可以是公共的或私有的。 任何人都可以搜索和访问公共仓库,即使没有Docker Hub帐户的人也可以。 专用存储库仅对您明确授予访问权限的用户可用,并且它们不能公开搜索。 请注意,您可以公开私人回购交易,反之亦然。
还请注意,如果您公开私人回购协议,则需要确保公开代码已获得所有人和其他所有人的使用许可。 Docker Hub不提供任何对上传的图像执行自动许可证分析的方法; 就这些了。
尽管通常最容易使用Web界面搜索存储库,但Docker命令行或shell也允许您搜索图像。 使用docker search
运行搜索,该搜索返回匹配图像的名称和描述。
某些存储库被标记为正式存储库 。 这些提供了精选的Docker映像,这些映像旨在成为特定项目或应用程序(例如Nginx,Ubuntu,MySQL)的默认默认容器版本。 Docker采取其他步骤来验证官方映像的来源和安全性。
如果您自己维护要在Docker Hub上标记为正式存储库的项目,请发出拉取请求以开始该过程。 但是请注意,由Docker来确定您的项目是否值得纳入。
Docker推送和Docker拉取
必须先使用docker login
命令连接到Docker Hub,然后才能提交Docker Hub用户名和密码,然后才能将容器映像从Docker Hub推入和拉出。 默认情况下, docker login
会将您带到Docker Hub,但是您可以使用它来连接到任何兼容的存储库,包括私有托管的存储库。
通常,从命令行使用Docker Hub非常简单。 如上所述使用docker search
来查找图像, docker pull
按名称提取图像,而docker push
按名称存储图像。 除非您指定其他注册表的路径,否则默认情况下, docker pull
从Docker Hub提取图像。
请注意,当您推送图像时, 最好预先标记它 。 标签是可选的,但它们可以帮助您和您的团队消除图像版本,功能和其他特征的歧义。 一种常见的实现方法是在图像构建过程中自动执行标记,例如,通过将版本或分支信息作为标记添加到图像中。
在Docker Hub上自动构建
可以从托管在存储库中的组件自动构建Docker Hub上托管的容器映像。 使用自动构建,对仓库中代码的任何更改都会自动反映在容器中; 您无需手动将新生成的映像推送到Docker Hub。
通过将映像链接到构建上下文 (即包含Dockerfile的存储库)的自动化构建工作,该仓库文件托管在GitHub或Bitbucket等服务上。 尽管Docker Hub将您限制为每五分钟一次构建,并且尚不支持Git大文件或Windows容器,但是自动构建对于每天甚至每小时更新的项目仍然很有用。
如果您有付费的Docker Hub帐户,则可以利用并行构建。 符合五个并行构建条件的帐户可以一次从多达五个不同的存储库构建容器。 请注意, 每个单独的存储库一次只能建立一个容器。 并行性跨存储库,而不是跨存储库中的图像。
Docker Hub中为开发人员提供的另一个便利机制是webhooks 。 每当涉及存储库的特定事件发生时(重建映像或添加新标签),Docker Hub都可以将POST请求发送到给定的端点。 您可以使用Webhooks在重建映像时自动部署或测试映像,或者仅在映像通过测试后才部署映像。
From: https://www.infoworld.com/article/3288606/docker-tutorial-get-started-with-docker-hub.html