github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/docs/migration.md (about)

     1  <!--[metadata]>
     2  +++
     3  title = "Migrate to Engine 1.10"
     4  description = "Migrate to Engine 1.10"
     5  keywords = ["docker, documentation, engine, upgrade, migration"]
     6  [menu.main]
     7  parent = "engine_use"
     8  weight=79
     9  +++
    10  <![end-metadata]-->
    11  
    12  # Migrate to Engine 1.10
    13  
    14  Starting from version 1.10 of Docker Engine, we completely change the way image
    15  data is addressed on disk. Previously, every image and layer used a randomly
    16  assigned UUID. In 1.10 we implemented a content addressable method using an ID,
    17  based on a secure hash of the image and layer data.
    18  
    19  The new method gives users more security, provides a built-in way to avoid ID
    20  collisions and guarantee data integrity after pull, push, load, or save. It also
    21  brings better sharing of layers by allowing many images to freely share their
    22  layers even if they didn’t come from the same build.
    23  
    24  Addressing images by their content also lets us more easily detect if something
    25  has already been downloaded. Because we have separated images and layers, you
    26  don’t have to pull the configurations for every image that was part of the
    27  original build chain. We also don’t need to create layers for the build
    28  instructions that didn’t modify the filesystem.
    29  
    30  Content addressability is the foundation for the new distribution features. The
    31  image pull and push code has been reworked to use a download/upload manager
    32  concept that makes pushing and pulling images much more stable and mitigate any
    33  parallel request issues. The download manager also brings retries on failed
    34  downloads and better prioritization for concurrent downloads.
    35  
    36  We are also introducing a new manifest format that is built on top of the
    37  content addressable base. It directly references the content addressable image
    38  configuration and layer checksums. The new manifest format also makes it
    39  possible for a manifest list to be used for targeting multiple
    40  architectures/platforms. Moving to the new manifest format will be completely
    41  transparent.
    42  
    43  ## Preparing for upgrade
    44  
    45  To make your current images accessible to the new model we have to migrate them
    46  to content addressable storage. This means calculating the secure checksums for
    47  your current data.
    48  
    49  All your current images, tags and containers are automatically migrated to the
    50  new foundation the first time you start Docker Engine 1.10. Before loading your
    51  container, the daemon will calculate all needed checksums for your current data,
    52  and after it has completed, all your images and tags will have brand new secure
    53  IDs.
    54  
    55  **While this is simple operation, calculating SHA256 checksums for your files
    56  can take time if you have lots of image data.** On average you should assume
    57  that migrator can process data at a speed of 100MB/s. During this time your
    58  Docker daemon won’t be ready to respond to requests.
    59  
    60  ## Minimizing migration time
    61  
    62  If you can accept this one time hit, then upgrading Docker Engine and restarting
    63  the daemon will transparently migrate your images. However, if you want to
    64  minimize the daemon’s downtime, a migration utility can be run while your old
    65  daemon is still running.
    66  
    67  This tool will find all your current images and calculate the checksums for
    68  them. After you upgrade and restart the daemon, the checksum data of the
    69  migrated images will already exist, freeing the daemon from that computation
    70  work. If new images appeared between the migration and the upgrade, those will
    71  be processed at time of upgrade to 1.10.
    72  
    73  [You can download the migration tool
    74  here.](https://github.com/docker/v1.10-migrator/releases)
    75  
    76  The migration tool can also be run as a Docker image. While running the migrator
    77  image you need to expose your Docker data directory to the container. If you use
    78  the default path then you would run:
    79  
    80      $ docker run --rm -v /var/lib/docker:/var/lib/docker docker/v1.10-migrator
    81  
    82  If you use the
    83  devicemapper storage driver, you also need to pass the flag `--privileged` to
    84  give the tool access to your storage devices.