dockernexusartifactorydocker-registry

Docker Registry vs Nexus/Artifactory


Is the 'Docker registry' in Docker engine similar to Nexus/Artifactory? What are the similarities and differences between them? If we already have Nexus, can we use it as an alternative to Docker registry and plug it into the Docker engine?

Could someone help me clear this?


Solution

  • A Docker registry is a repository for managing Docker images. The registry is a service of its own and not part of the Docker engine.

    The registry has a similar usage to repository managers like Artifactory or Nexus, with one big difference: a repository manager will usually be able to manage repositories for different types of technologies, for example: Maven, NPM, Ruby Gems, CocoaPods, Git LFS, Python Eggs and others. A pure Docker registry will only manage Docker images.

    There are couple of things you should take into consideration when choosing a tool for managing your Docker registry:

    1. Performance - Docker images can be big. In a CI/CD environment generating large numbers of Docker images a day, you need a tool that will able to deal with the load and scale as you grow. Some tools offer a clustered (HA) version which allows spreading the load between multiple nodes.

    2. Storage management - Docker images consume a lot of storage space. It is better to choose a tool which manages the required storage efficiently:

      • Supports deduplication of image layers between images and repositories.
      • Efficiently cleans of unused image layers (garbage collection). Notice that some tools offer a stop the world GC mechanism which hurts performance.
      • Offers cleanup procedures/mechanisms for images which allows deleting images based on age, usage etc.
      • Supports multiple storage backends - file system, object storage.
    3. Support for multiple registries - some tools limit you to managing a single registry while others allow managing multiple registries in parallel. This is useful when you need to separate between snapshots and production ready images.

    4. Support for the latest Docker version - the Docker registry API and manifests format are changing often. Make sure you choose a tool which supports all the latest changes.

    5. Universal - if you need to manage more than Docker images, which is usually the case since you also use tools like NPM, Bower, Yum and others which also require a registry, choose a universal repository manager which supports such technologies.

    6. Enterprise ready - look for a tool which is enterprise ready with support for features such LDAP connectivity, role based access control, high availability, multi site development, etc.


    Disclaimer: I work for JFrog, the company behind Artifactory.