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