On Thu, Jan 18, 2018 at 12:11 PM, Tom McKay <thomasmc...@redhat.com> wrote: > By the way, it was much simpler since skopeo copy has a "dir:" so simply > looping over the tags from skopeo inspect was sufficient. I still need to > confirm the upload to pulp preserves everything.
Good to hear!! This may be a cool thing to write up as a blog post if you have the time. > On Thu, Jan 18, 2018 at 9:45 AM, Stephen Milner <smil...@redhat.com> wrote: >> >> On Thu, Jan 18, 2018 at 9:07 AM, Tom McKay <thomasmc...@redhat.com> wrote: >> > Perfect, thanks! >> >> My pleasure! >> >> > 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? >> >> I've not heard a specific need until this email. I tend to think that >> mirror functionality should either be part of skopeo as a subcommand >> or it's own tool which requires skopeo. >> >> > 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/ >> >> I think a good first step to see if it would fit skopeo would be to >> open an issue up with the information. I believe some of the more >> involved developers could give a better response in terms of if it >> would make sense to live inside or outside skopeo proper. >> >> > 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/ >> > >> > >> >> >> >> -- >> Thanks, >> Steve Milner >> >> Atomic | Red Hat | http://projectatomic.io/ > > -- Thanks, Steve Milner Atomic | Red Hat | http://projectatomic.io/