使用 Docker 时,开发人员会创建应用或服务并将其及其依赖项打包到容器映像中。 映像是应用或服务及其配置和依赖项的静态表示形式。
若要运行应用或服务,将实例化应用的映像以创建将在 Docker 主机上运行的容器。 容器最初在开发环境或电脑中进行测试。
开发人员应将镜像存储在镜像仓库中,该仓库充当这些镜像的库,在部署到生产编排器时需要使用这些镜像。 Docker 通过 Docker 中心维护公共注册表;其他供应商为不同的映像集合(包括 Azure 容器注册表)提供注册表。 或者,企业可以在本地为自己的 Docker 映像创建专用注册表。
图 2-4 显示了 Docker 中的映像和注册表与其他组件的关系。 它还展示供应商提供的多种注册表解决方案。
图 2-4. Docker 术语和概念的分类
注册表类似于一个书架,其中存储映像并可供提取,用于生成容器以运行服务或 Web 应用。 本地和公有云中存在专用 Docker 注册表。 Docker Hub 是由 Docker 维护的公共注册表,而 Docker 受信任的注册表是企业级解决方案。Azure 还提供了 Azure 容器注册表。 AWS、Google 和其他公司也有容器注册表。
将镜像放在镜像仓库中可以存储静态和不可变的应用程序组件,包括在框架级别存储它们的所有依赖项。 然后,可以在多个环境中对这些映像进行版本控制并部署,从而提供一致的部署单元。
建议在以下情况下使用本地或云托管的专用映像注册表:
由于保密性,不得公开共享映像。
你想要在映像与所选部署环境之间具有最低网络延迟。 例如,如果生产环境是 Azure 云,你可能想要将映像存储在 Azure 容器注册表 中,以便网络延迟将最小。 同样,如果生产环境在本地,则可能需要在同一本地网络中提供本地 Docker 受信任的注册表。