Perfect, thanks!

Overall I do think there is a need for this utility; has anyone else heard
the need? Could it be part of the atomic command or are there utility
scripts associated with skopeo and/or atomic?

For myself, I am enhancing (and accepting enhancement requests! ;)
Foreman[1] / Satellite-6 to better handle images in a disconnected
environment (very common). I'll use skopeo to export from a registry and
then upload to the container image storage tool built into Foreman,
Pulp[2]. Foreman acts as a registry for these uploaded images. In connected
cases Foreman can simply sync all of this information directly from the
other registry.

[1] https://theforeman.org/
[2] https://pulpproject.org/

On Wed, Jan 17, 2018 at 11:31 AM, Stephen Milner <smil...@redhat.com> wrote:

> On Wed, Jan 17, 2018 at 9:55 AM, Tom McKay <thomasmc...@redhat.com> wrote:
> > If I wanted to sneaker-net an image and all its tags and manifest lists,
> > could I use skopeo? The goal would be to mirror a registry completely.
> >
> > As an example, consider docker.io/busybox which has schema1, schema2,
> and
> > manifest lists.
>
> Hey Tom,
>
> You could but, from my understanding, it would require some scripting
> of sorts. Keep in mind I didn't test this in terms of mirroring but it
> seems like it would get you at least pretty close to the files you
> need.
>
> You could start by inspecting the image in the original registry:
>
>     skopeo inspect docker://docker.io/busybox
>
> This will provide you with json output that includes tags. For each
> tag you would use copy to pull that specific image down locally into a
> one of the available formats for loading later and pull the manifest.
> A quick and dirty script to parse the tags from STDIN can be found at
> https://gist.github.com/ashcrow/f327431cad90c26bbce94debd80a3e74.
>
> To get the manifests for each image you will run something like:
>
>     skopeo inspect --raw docker://docker.io/busybox:$TAG > manifests/$TAG
>
> Note that you'll get either a v1 or v2 depending on what is stored on
> the remote registry.
>
> You'd also want to use  copy to actually get the image data itself.
> Something like:
>
>     skopeo copy docker://docker.io/busybox:$TAG oci:busybox-tmp:$TAG
>
> From here you'd move the blobs into the right directory structure from
> busybox-tmp/blobs/sha256/$BLOBHASH -> busybox/blobs/sha256:$BLOBHASH
> then clean up the busybox-tmp dir.
>
> This should get you pretty far in terms of getting what you need to
> mirror an image from a registry. Again, keep in mind I didn't actually
> test that this creates everything you need to be a mirror of an image
> but at the very least it should get you started.
>
> HTH!
>
>
> --
> Thanks,
> Steve Milner
>
> Atomic | Red Hat | http://projectatomic.io/
>

Reply via email to