让我们一起深入了解Docker Hub的世界。
今天,我们将探索Docker Hub,学习如何有效利用它,包括创建自定义镜像,以及它如何协助我们发布和提取镜像。我们将一起访问Docker Hub,并重点关注一些流行的存储库。
准备工作
首先,你需要对Docker有基本的理解,并熟悉Windows和Linux环境。 本教程中,我们将使用Docker Desktop工具进行实践操作,如构建镜像并将其推送到Docker Hub。 Windows和Mac用户可以从此处下载安装,Linux用户请参考此处的指南。
什么是Docker Hub?
Docker Hub是Docker公司提供的镜像仓库服务。
它允许我们从Docker Hub拉取和推送Docker镜像。 我们可以将其类比为源代码管理的GitHub,但Docker Hub专注于容器镜像的下载和发布。 这是一个基于云的在线仓库,存储着两种类型的仓库:公共仓库和私有仓库。 公共仓库对所有人开放,而私有仓库只有仓库所有者才能访问。 存储一定数量以上的私有仓库会产生相应的费用。
Docker Hub 的功能
Docker Hub 提供以下几项核心功能。
#1. 镜像仓库
Docker Hub 帮助我们发现和提取容器镜像。
它还支持将镜像作为公共或私有仓库推送到Docker Hub。
#2. 团队与组织
我们可以创建团队,并将仓库设置为私有,仅供组织内部使用。 这种方式便于我们管理对私有容器镜像的访问权限。
#3. GitHub 和 Bitbucket 集成
Docker Hub 允许与 GitHub 和 BitBucket 等代码仓库进行集成。
#4. 自动化构建
当代码仓库中的源代码发生变更时,Docker Hub 可以自动检测到,并从 GitHub 或 BitBucket 构建新的容器镜像,然后将其推送到Docker Hub。
#5. Webhooks
一旦我们成功推送了镜像,Webhooks可以触发一个动作,从而将Docker Hub与其他服务集成。
#6. 官方与发布者镜像
Docker官方维护的高质量镜像被认为是官方镜像,可以直接拉取使用。 同样,外部供应商提供的高质量镜像是发布者镜像,也称为认证镜像,它们提供对Docker企业的支持和兼容性保证。 我们将在后续内容中深入探讨认证镜像。
创建第一个仓库
首先,你需要使用你的账号登录Docker Hub。 如果你没有账号,可以点击网页上的注册按钮进行创建。 登录后,点击欢迎页面上的“创建仓库”开始创建。
- 点击“创建仓库”后,你需要为你的仓库命名。
- 选择可见性选项:公共或私有。
我们还可以集成代码仓库,如GitHub和BitBucket,这一步是可选的,也可以稍后再进行设置。
- 一切完成后,点击“创建”。
恭喜!你已成功创建了第一个仓库,如下所示。
Docker Hub 仅免费提供一个私有仓库。 如果你需要更多私有仓库,可以升级为付费方案。
现在打开你下载并安装的Docker Desktop工具/终端,并使用命令登录Docker Hub。
docker login
探索镜像
有两种方法可以从 Docker Hub 搜索公共仓库和镜像:通过 Docker Hub 网站或使用命令行工具。 例如,我们搜索 MySQL 仓库镜像。
docker search mysql
下载镜像
我们可以使用pull
命令从Docker Hub下载镜像,如下所示:
# docker pull mysql
如果你的机器上已经有MySQL镜像,上述命令会自动将其更新到最新版本。需要注意的是,通过docker search
命令的输出,我们可以看到Docker Hub上有许多MySQL镜像,这是因为任何人都可以推送镜像。 因此,我们需要根据实际需求选择合适的镜像。
假设我们提取一个bitnami/mysql
镜像。
# docker pull bitnami/mysql
创建镜像
创建镜像需要一个Dockerfile。 你可以将Dockerfile视为Docker构建镜像的说明书。 简单来说,就是一个包含构建指令的配置文件,告诉Docker如何构建镜像。
工作原理
Docker读取Dockerfile中的指令并自动构建镜像。 Docker镜像是一个分层的文件系统,由多个只读层组成,其中每一层都对应着Dockerfile中的一条指令。 现在,我们按照以下步骤使用Dockerfile创建镜像。
创建一个Dockerfile,用于指定应用程序的配置。
# sudo vim Dockerfile
请注意,文件名必须是Dockerfile
,并带有大写字母“D”。
FROM ubuntu:16.04
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install -y mysql
CMD echo "My first image created."
下面我们来看一下Dockerfile中一些重要的关键词:
- 可以使用 # 符号在Dockerfile中添加注释。
- “FROM”关键词定义了要使用的基础镜像。
- “MAINTAINER”关键词用于定义镜像的维护者。
- “RUN”关键词用于执行指定的指令。在本例中,先更新系统,然后安装MySQL。
- “CMD”关键词用于在容器启动后执行命令。
- “COPY”关键词用于将主机上的文件复制到Docker容器中。
- “EXPOSE”关键词用于指定容器运行进程的端口号。
运行以下命令来构建Docker镜像:
语法:
docker build -t
# docker build -t asadali08537/first-repo .
在上面的命令中,镜像的名称是asadali08537/first-repo
,.
表示当前工作目录。 Docker 会在当前目录中查找 Dockerfile。 -t
用于标记镜像。 你会看到类似的输出:
现在我们运行镜像进行测试:
docker run asadali08527/first-repo
执行上述命令,Docker会在你的机器上成功安装MySQL,并进行必要的更新,最后显示echo消息。
推送镜像
一旦镜像创建并成功运行,可以使用push
命令将其推送到Docker Hub。
docker push asadali08527/first-repo
我们可以在Docker Hub上检查镜像的标签和状态,如下所示:
什么是Docker认证镜像?
这些是由供应商或贡献者发布的官方镜像。 镜像只有在内容符合Docker Hub的规则、标准和法律时才能被认证。 简而言之,镜像必须通过一些基本测试。
Docker Hub 提供 inspectDockerImage
工具,供应商可以通过它对镜像和插件进行自我认证。 (通常,供应商或贡献者会发布插件来记录卷和网络)。
注意:
要将镜像发布为Docker认证镜像,必须先使用inspectDockerImage工具自行认证并测试镜像和插件。 认证成功提交后,Docker Hub将对其进行认证。 如果你的内容需要在未经认证的环境中使用,那么不能以认证形式发布。
DockerHub上的热门镜像
Docker Hub上有许多精心策划和优化的镜像。
这些镜像的受欢迎程度取决于多个因素,例如下载量、市场份额、评级和满意度评分等。要查看最受欢迎的仓库的详细列表,请访问Docker Hub网站。 镜像的使用还取决于操作系统及其架构。 如果我们知道拉取的镜像将用于哪个操作系统及其架构,那么在拉取镜像之前必须考虑以下关键因素。
- 使用标签查找特定版本(大多数情况下为最新版本)。
- 选择下载量和星数最多的镜像。
- 查看更新时间(上次更新时间)。
- 尽可能检查类型,是经过验证的发布者还是官方(Docker认证)的镜像。
Webhooks
Webhooks是一种处理事件的Web回调。它是一种应用向其他应用提供实时信息的方式。 现在,几乎每个应用都提供Webhooks工具,Docker Hub也具备此功能。
它是由用户指定的事件触发的HTTP推送API。 我们可以在Docker中使用Webhooks来通知使用相关镜像的应用或服务。 通常,我们将Docker的Webhook配置为事件管道。 这样,任何新镜像的上传都会触发测试应用的运行。
一旦测试结果成功,它会触发另一个事件,即容器部署,部署成功后会触发其他事件来记录迄今为止所做的更改。
结论
相信你现在对Docker Hub以及如何搜索、创建和推送镜像有了相当的了解。 请记住,当你推送公共镜像时,任何人都可以访问它。
如果你还没有安装Docker,请查看此Docker安装指南。