Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

skopeo copy without modifying digest #1440

Closed
zfrhv opened this issue Sep 14, 2021 · 6 comments
Closed

skopeo copy without modifying digest #1440

zfrhv opened this issue Sep 14, 2021 · 6 comments

Comments

@zfrhv
Copy link

zfrhv commented Sep 14, 2021

most of the redhat products are pulling images by digests to make sure that the image has not been modified.
we work in restricted network so our goal is to get the images to the restricted network environment without modifying the image digest.

the only way to transfer file to the restricted environment is by usb flash drive, so we need to somehow save the image as a file, transfer the file with usb, and then upload the image to the registry in the restricted environment.

it would be nice maybe to add some flag so that skopeo would copy the image without modifying its digest.

the only way to move image without modifying its digest is between registries with the --all flag:

skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker://localhost:5000/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

so to transfer the image to the restricted environment we create custom registry:

docker run -d -p 5000:5000 --name registry -v /var/registry-data:/var/lib/registry:z registry:2

copy the image to the registry:

skopeo copy --all --dest-tls-verify=false docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker://localhost:5000/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

copy the /var/registry-data/docker folder to the restricted environment.
create the container in the restricted environment machine:

docker run -d -p 5000:5000 --name registry -v /var/registry-data:/var/lib/registry:z registry:2

and copy the image to restricted environment registry:

skopeo copy --all --src-tls-verify=false docker://localhost:5000/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker://my-registry.domain/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

and then pulling by the digest will work:

docker pull my-registry.domain/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

as you can see the process is very difficult, and if we try to save the image as a file straight, the digest would change:

skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker-archive:image.tar

then we would move the image file to the restricted environment, and then load it:

skopeo copy --all docker-archive:image.tar docker://my-registry.domain/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

but i get the error:

FATA[0000] Digest of source image's manifest would not match destination reference

probably because when saving the image as a file, it actually modifies the digest:

skopeo inspect docker-archive:image.tar
{
    "Digest": "sha256:9635784f279e1430ef26391a2a7fe33bebfa0e69b37b452e597780b23a2de437",
    "RepoTags": [],
    "Created": "2021-08-26T23:25:16Z",
    "DockerVersion": "1.13.1",
    "Labels": {
        "io.openshift.release": "4.8.8",
        "io.openshift.release.base-image-digest": "sha256:17681225ba94bd348915893f1eed45976b8ed6ae1a207ae22c7b492498294eab"
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:e39c3abf0df93fca44921f3548fcf6e139afdcb2ac9b7baa6c47b39f87113b32",
        "sha256:8f26704f753cbe8b20afc01e97a4cb652befe26791b4d33193afc99ce544ebf5",
        "sha256:945a0d6057fb3d3facced13cb204487a0427faeca6cf5ecbcb70603c96bfcec2",
        "sha256:23f80f6c08e88aa316d5ae0bf74ca1a3ebed8dab21fffe9561041d9793820853",
        "sha256:8437acd8f408a065c397c2c452db2b198b27e9a03d3edd37e31fbd211abe021c",
        "sha256:00e0b7632bb74fa6455247bfccedd59a229a9b135e9a32867785bdf2ee25fae0"
    ],
    "Env": [
        "__doozer=merge",
        "BUILD_RELEASE=202108130208.p0.git.ea6e779.assembly.stream",
        "BUILD_VERSION=v4.8.0",
        "OS_GIT_MAJOR=4",
        "OS_GIT_MINOR=8",
        "OS_GIT_PATCH=0",
        "OS_GIT_TREE_STATE=clean",
        "OS_GIT_VERSION=4.8.0-202108130208.p0.git.ea6e779.assembly.stream-ea6e779",
        "SOURCE_GIT_TREE_STATE=clean",
        "OS_GIT_COMMIT=ea6e779",
        "SOURCE_DATE_EPOCH=1623357496",
        "SOURCE_GIT_COMMIT=ea6e779ef89710879e2c08c0e5847a5b5e860b28",
        "SOURCE_GIT_TAG=v1.0.0-553-gea6e779e",
        "SOURCE_GIT_URL=https://github.com/openshift/cluster-version-operator",
        "GODEBUG=x509ignoreCN=0,madvdontneed=1",
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        "container=oci"
    ]
}
if you want to compare with the source image:

skopeo inspect docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f
{
    "Name": "quay.io/openshift-release-dev/ocp-release",
    "Digest": "sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f",
    "RepoTags": [
        "4.0.0-2",
        "4.0.0-3",
        "4.0.0-5",
        "4.0.0-4",
        "4.0.0-6",
        "4.0.0-7",
        "4.0.0-8",
        "4.0.0-9",
        "4.0.0-0.1",
        "4.0.0-0.okd-0",
        "4.0.0-0.2",
        "4.0.0-0",
        "4.0.0-1",
        "4.0.0-0.3",
        "4.0.0-0.4",
        "4.0.0-0.5",
        "4.0.0-0.6",
        "4.0.0-0.7",
        "4.0.0-0.8",
        "4.0.0-0.9",
        "4.0.0-0.10",
        "4.0.0-0.11",
        "4.1.0-rc.0",
        "4.1.0-rc.1",
        "4.1.0-rc.2",
        "4.1.0-rc.3",
        "4.1.0-rc.4",
        "4.1.0-rc.5",
        "4.1.0-rc.6",
        "4.1.0-rc.7",
        "4.1.0-rc.8",
        "4.1.0-rc.9",
        "4.1.0",
        "4.2.0-0.nightly-2019-06-03-135056",
        "4.1.1",
        "4.1.2",
        "4.1.3",
        "4.1.4",
        "4.1.6",
        "4.1.7",
        "4.1.8",
        "4.1.9",
        "4.1.10",
        "4.1.11",
        "4.1.12",
        "4.1.13",
        "4.1.14",
        "4.1.15",
        "4.1.16",
        "4.1.17",
        "4.1.18",
        "4.2.0-rc.0",
        "4.2.0-rc.1",
        "4.2.0-rc.2",
        "4.2.0-rc.3",
        "4.2.0-rc.4",
        "4.1.19",
        "4.2.0-rc.5",
        "4.1.20",
        "4.2.0",
        "4.2.1",
        "4.1.21",
        "4.2.2",
        "4.1.22",
        "4.1.23",
        "4.2.4",
        "4.1.24",
        "4.2.5",
        "4.2.6",
        "4.2.7",
        "4.2.8",
        "4.1.25",
        "4.2.9",
        "4.1.26",
        "4.1.27",
        "4.2.10-s390x",
        "4.2.10",
        "4.1.28",
        "4.2.11-s390x",
        "4.2.11",
        "4.2.12",
        "4.2.12-s390x",
        "4.1.29",
        "4.2.13",
        "4.2.13-s390x",
        "4.3.0-rc.0-x86_64",
        "4.2.14-x86_64",
        "4.2.14-s390x",
        "4.1.31-x86_64",
        "4.2.15-s390x",
        "4.2.15-x86_64",
        "4.3.0-rc.1-x86_64",
        "4.3.0-rc.2-x86_64",
        "4.2.16-s390x",
        "4.2.16-x86_64",
        "4.3.0-rc.3-x86_64",
        "4.3.0-x86_64",
        "4.1.30",
        "4.3.1-x86_64",
        "4.1.34-x86_64",
        "4.2.18-x86_64",
        "4.2.19-x86_64",
        "4.2.18-s390x",
        "4.3.2-x86_64",
        "4.2.19-s390x",
        "4.2.20-x86_64",
        "4.2.20-s390x",
        "4.3.3-x86_64",
        "4.2.21-x86_64",
        "4.2.21-s390x",
        "4.1.37-x86_64",
        "4.3.5-x86_64",
        "4.2.22-s390x",
        "4.2.22-x86_64",
        "4.2.23-x86_64",
        "4.4.0-rc.0-x86_64",
        "4.1.38-x86_64",
        "4.2.23-s390x",
        "4.4.0-rc.1-x86_64",
        "4.4.0-rc.2-x86_64",
        "4.2.24-x86_64",
        "4.2.24-s390x",
        "4.3.7-x86_64",
        "4.4.0-rc.3-x86_64",
        "4.2.25-x86_64",
        "4.2.25-s390x",
        "4.3.8-x86_64",
        "4.4.0-rc.4-x86_64",
        "4.2.26-x86_64",
        "4.2.26-s390x",
        "4.3.9-x86_64",
        "4.2.27-x86_64",
        "4.3.10-x86_64",
        "4.2.27-s390x",
        "4.4.0-rc.5-x86_64",
        "4.4.0-rc.6-x86_64",
        "4.2.28-s390x",
        "4.2.28-x86_64",
        "4.3.11-x86_64",
        "4.4.0-rc.7-x86_64",
        "4.3.12-x86_64",
        "4.4.0-rc.8-x86_64",
        "4.3.13-x86_64",
        "4.2.29-x86_64",
        "4.2.29-s390x",
        "4.1.41-x86_64",
        "4.4.0-rc.9-x86_64",
        "4.4.0-rc.10-x86_64",
        "4.3.14-x86_64",
        "4.3.14-s390x",
        "4.3.14-ppc64le",
        "4.3.15-x86_64",
        "4.3.15-s390x",
        "4.3.15-ppc64le",
        "4.4.0-rc.11-x86_64",
        "4.2.30-x86_64",
        "4.2.30-s390x",
        "4.3.16-x86_64",
        "4.3.16-s390x",
        "4.3.16-ppc64le",
        "4.3.17-x86_64",
        "4.3.17-s390x",
        "4.3.17-ppc64le",
        "4.4.0-rc.12-x86_64",
        "4.3.18-x86_64",
        "4.4.0-rc.13-x86_64",
        "4.3.18-s390x",
        "4.3.18-ppc64le",
        "4.4.0-x86_64",
        "4.4.1-x86_64",
        "4.4.2-x86_64",
        "4.4.3-x86_64",
        "4.2.32-x86_64",
        "4.2.32-s390x",
        "4.3.19-x86_64",
        "4.3.19-s390x",
        "4.3.19-ppc64le",
        "4.2.33-x86_64",
        "4.2.33-s390x",
        "4.3.20-x86_64",
        "4.3.20-x86_64.bad",
        "4.3.21-x86_64",
        "4.3.21-ppc64le",
        "4.3.21-s390x",
        "4.4.4-x86_64",
        "4.3.22-x86_64",
        "4.3.22-s390x",
        "4.3.22-ppc64le",
        "4.4.5-x86_64",
        "4.4.6-x86_64",
        "4.3.23-x86_64",
        "4.2.34-x86_64",
        "4.2.34-s390x",
        "4.3.23-ppc64le",
        "4.3.23-s390x",
        "4.3.24-x86_64",
        "4.3.24-s390x",
        "4.3.24-ppc64le",
        "4.4.7-x86_64",
        "4.5.0-rc.1-x86_64",
        "4.4.8-x86_64",
        "4.3.25-x86_64",
        "4.3.25-s390x",
        "4.3.25-ppc64le",
        "4.4.9-x86_64",
        "4.4.9-s390x",
        "4.4.9-ppc64le",
        "4.3.26-x86_64",
        "4.3.26-s390x",
        "4.3.26-ppc64le",
        "4.5.0-rc.2-x86_64",
        "4.4.10-x86_64",
        "4.4.10-s390x",
        "4.4.10-ppc64le",
        "4.3.27-x86_64",
        "4.3.27-s390x",
        "4.3.27-ppc64le",
        "4.2.36-x86_64",
        "4.2.36-s390x",
        "4.5.0-rc.3-x86_64",
        "4.5.0-rc.4-x86_64",
        "4.5.0-rc.5-x86_64",
        "4.4.11-x86_64",
        "4.4.11-ppc64le",
        "4.4.11-s390x",
        "4.3.28-x86_64",
        "4.3.28-s390x",
        "4.3.28-ppc64le",
        "4.5.0-rc.6-x86_64",
        "4.5.0-rc.7-x86_64",
        "4.3.29-x86_64",
        "4.3.29-s390x",
        "4.3.29-ppc64le",
        "4.4.12-x86_64",
        "4.4.12-ppc64le",
        "4.4.12-s390x",
        "4.5.0-x86_64",
        "4.5.1-rc.0-x86_64",
        "4.5.1-x86_64",
        "4.5.2-x86_64",
        "4.4.13-x86_64",
        "4.4.13-ppc64le",
        "4.4.13-s390x",
        "4.5.3-x86_64",
        "4.4.14-x86_64",
        "4.4.14-s390x",
        "4.4.14-ppc64le",
        "4.5.4-x86_64",
        "4.5.4-s390x",
        "4.5.4-ppc64le",
        "4.4.15-x86_64",
        "4.4.15-s390x",
        "4.4.15-ppc64le",
        "4.4.0-0.nightly-2020-07-30-212136",
        "4.3.31-x86_64",
        "4.3.31-s390x",
        "4.3.31-ppc64le",
        "4.6.0-0.nightly-2020-07-31-080025-x86_64",
        "4.6.0-0-2020-07-31-080025-x86_64",
        "4.3.0-0-2020-07-31-025105-x86_64",
        "4.3.0-0.nightly-2020-07-29-210854-x86_64",
        "4.3.0-0.nightly-2020-07-30-042530-x86_64",
        "4.4.0-0.nightly-2020-07-31-012907-x86_64",
        "4.5.0-0.nightly-2020-07-31-162914-x86_64",
        "4.6.0-0.nightly-2020-07-31-225620-x86_64",
        "4.4.16-x86_64",
        "4.5.5-x86_64",
        "4.4.16-s390x",
        "4.4.16-ppc64le",
        "4.5.5-s390x",
        "4.5.5-ppc64le",
        "4.6.0-fc.0-x86_64",
        "4.6.0-fc.0-s390x",
        "4.6.0-fc.0-ppc64le",
        "4.5.6-x86_64",
        "4.5.6-s390x",
        "4.5.6-ppc64le",
        "4.4.17-x86_64",
        "4.4.17-s390x",
        "4.4.17-ppc64le",
        "4.5.0-0.nightly-2020-08-13-071731-x86_64",
        "4.6.0-fc.1-x86_64",
        "4.6.0-fc.1-s390x",
        "4.6.0-fc.1-ppc64le",
        "4.3.32-x86_64",
        "4.3.32-s390x",
        "4.3.32-ppc64le",
        "4.3.33-x86_64",
        "4.3.33-ppc64le",
        "4.3.33-s390x",
        "4.5.7-x86_64",
        "4.5.7-s390x",
        "4.5.7-ppc64le",
        "4.4.18-x86_64",
        "4.4.18-s390x",
        "4.4.18-ppc64le",
        "4.6.0-fc.2-x86_64",
        "4.6.0-fc.2-ppc64le",
        "4.6.0-fc.2-s390x",
        "4.5.0-0.hotfix-2020-08-24-185832-x86_64",
        "4.4.19-x86_64",
        "4.4.19-s390x",
        "4.4.19-ppc64le",
        "4.6.0-fc.3-s390x",
        "4.6.0-fc.3-x86_64",
        "4.3.35-x86_64",
        "4.3.35-s390x",
        "4.3.35-ppc64le",
        "4.4.20-x86_64",
        "4.4.20-s390x",
        "4.4.20-ppc64le",
        "4.5.8-x86_64",
        "4.5.8-s390x",
        "4.5.8-ppc64le",
        "4.6.0-fc.4-x86_64",
        "4.6.0-fc.4-s390x",
        "4.6.0-fc.4-ppc64le",
        "4.5.9-x86_64",
        "4.4.21-x86_64",
        "4.4.21-s390x",
        "4.4.21-ppc64le",
        "4.5.9-s390x",
        "4.5.9-ppc64le",
        "4.6.0-fc.5-x86_64",
        "4.6.0-fc.5-s390x",
        "4.6.0-fc.5-ppc64le",
        "4.6.0-fc.6-x86_64",
        "4.6.0-fc.6-ppc64le",
        "4.6.0-fc.6-s390x",
        "4.5.10-x86_64",
        "4.5.10-s390x",
        "4.5.10-ppc64le",
        "4.4.22-x86_64",
        "4.4.22-s390x",
        "4.4.22-ppc64le",
        "4.6.0-fc.7-x86_64",
        "4.6.0-fc.7-s390x",
        "4.6.0-fc.7-ppc64le",
        "4.5.11-x86_64",
        "4.5.11-s390x",
        "4.5.11-ppc64le",
        "4.4.23-ppc64le",
        "4.4.23-s390x",
        "4.4.23-x86_64",
        "4.3.38-x86_64",
        "4.3.38-s390x",
        "4.3.38-ppc64le",
        "4.5.12-x86_64",
        "4.5.12-ppc64le",
        "4.5.12-s390x",
        "4.4.24-x86_64",
        "4.4.24-s390x",
        "4.4.24-ppc64le",
        "4.2.0-0.hotfix-2020-09-19-234758-x86_64",
        "4.4.25-x86_64",
        "4.4.25-s390x",
        "4.4.25-ppc64le",
        "4.6.0-fc.8-x86_64",
        "4.6.0-fc.8-ppc64le",
        "4.6.0-fc.8-s390x",
        "4.4.26-x86_64",
        "4.4.26-s390x",
        "4.4.26-ppc64le",
        "4.5.13-x86_64",
        "4.5.13-s390x",
        "4.5.13-ppc64le",
        "4.4.27-x86_64",
        "4.4.27-s390x",
        "4.4.27-ppc64le",
        "4.5.14-x86_64",
        "4.5.14-ppc64le",
        "4.5.14-s390x",
        "4.3.0-0.hotfix-2020-09-30-133631-x86_64",
        "4.6.0-fc.9-x86_64",
        "4.6.0-fc.9-s390x",
        "4.6.0-fc.9-ppc64le",
        "4.6.0-rc.0-x86_64",
        "4.6.0-rc.0-s390x",
        "4.6.0-rc.0-ppc64le",
        "4.6.0-rc.1-x86_64",
        "4.6.0-rc.1-s390x",
        "4.6.0-rc.1-ppc64le",
        "4.6.0-rc.2-x86_64",
        "4.6.0-rc.2-s390x",
        "4.6.0-rc.2-ppc64le",
        "4.6.0-rc.3-x86_64",
        "4.6.0-rc.3-ppc64le",
        "4.6.0-rc.3-s390x",
        "4.6.0-rc.4-x86_64",
        "4.6.0-rc.4-s390x",
        "4.6.0-rc.4-ppc64le",
        "4.5.15-x86_64",
        "4.5.15-s390x",
        "4.5.15-ppc64le",
        "4.4.28-x86_64",
        "4.4.28-s390x",
        "4.4.28-ppc64le",
        "4.3.40-x86_64",
        "4.3.40-s390x",
        "4.3.40-ppc64le",
        "4.4.29-x86_64",
        "4.4.29-ppc64le",
        "4.4.29-s390x",
        "4.5.16-x86_64",
        "4.5.16-s390x",
        "4.5.16-ppc64le",
        "4.6.0-x86_64",
        "4.6.0-ppc64le",
        "4.6.0-s390x",
        "4.6.1-x86_64",
        "4.6.1-ppc64le",
        "4.6.1-s390x",
        "4.5.17-x86_64",
        "4.5.17-s390x",
        "4.5.17-ppc64le",
        "4.5.18-ppc64le",
        "4.5.18-s390x",
        "4.5.18-x86_64",
        "4.4.30-ppc64le",
        "4.4.30-s390x",
        "4.4.30-x86_64",
        "4.6.2-ppc64le",
        "4.6.2-s390x",
        "4.6.2-x86_64",
        "4.6.3-s390x",
        "4.6.3-ppc64le",
        "4.6.3-x86_64",
        "4.6.4-ppc64le",
        "4.6.4-s390x",
        "4.6.4-x86_64",
        "4.5.19-x86_64",
        "4.5.19-s390x",
        "4.5.19-ppc64le",
        "4.5.20-x86_64",
        "4.5.20-s390x",
        "4.5.20-ppc64le",
        "4.6.5-x86_64",
        "4.6.5-ppc64le",
        "4.6.5-s390x",
        "4.5.21-x86_64",
        "4.6.6-x86_64",
        "4.6.6-ppc64le",
        "4.6.6-s390x",
        "4.5.21-s390x",
        "4.5.21-ppc64le",
        "4.4.31-x86_64",
        "4.4.31-s390x",
        "4.4.31-ppc64le",
        "4.5.0-0.hotfix-2020-11-28-021842-x86_64",
        "4.5.22-x86_64",
        "4.5.22-s390x",
        "4.5.22-ppc64le",
        "4.6.7-x86_64",
        "4.6.7-s390x",
        "4.6.7-ppc64le",
        "4.6.8-x86_64",
        "4.6.8-ppc64le",
        "4.6.8-s390x",
        "4.5.23-x86_64",
        "4.5.23-s390x",
        "4.5.23-ppc64le",
        "4.5.24-x86_64",
        "4.5.24-s390x",
        "4.5.24-ppc64le",
        "4.6.9-x86_64",
        "4.6.9-s390x",
        "4.6.9-ppc64le",
        "4.7.0-fc.0-x86_64",
        "4.7.0-fc.0-s390x",
        "4.7.0-fc.0-ppc64le",
        "4.7.0-fc.1-x86_64",
        "4.7.0-fc.1-s390x",
        "4.7.0-fc.1-ppc64le",
        "4.5.25-x86_64",
        "4.5.25-s390x",
        "4.5.25-ppc64le",
        "4.4.32-x86_64",
        "4.4.0-s390x",
        "4.4.32-s390x",
        "4.4.32-ppc64le",
        "4.6.10-s390x",
        "4.6.10-ppc64le",
        "4.6.10-x86_64",
        "4.7.0-fc.2-x86_64",
        "4.7.0-fc.2-ppc64le",
        "4.7.0-fc.2-s390x",
        "4.6.11-x86_64",
        "4.5.26-x86_64",
        "4.6.11-ppc64le",
        "4.6.11-s390x",
        "4.5.26-ppc64le",
        "4.5.26-s390x",
        "4.6.12-x86_64",
        "4.6.12-s390x",
        "4.6.12-ppc64le",
        "4.5.27-x86_64",
        "4.5.27-s390x",
        "4.5.27-ppc64le",
        "4.7.0-fc.3-x86_64",
        "4.7.0-fc.3-ppc64le",
        "4.7.0-fc.3-s390x",
        "4.5.28-x86_64",
        "4.5.28-s390x",
        "4.5.28-ppc64le",
        "4.6.13-x86_64",
        "4.6.13-s390x",
        "4.6.13-ppc64le",
        "4.7.0-fc.4-x86_64",
        "4.7.0-fc.4-s390x",
        "4.7.0-fc.4-ppc64le",
        "4.5.29-x86_64",
        "4.5.29-s390x",
        "4.5.29-ppc64le",
        "4.6.14-x86_64",
        "4.6.14-s390x",
        "4.6.14-ppc64le",
        "4.6.15-x86_64",
        "4.6.15-s390x",
        "4.6.15-ppc64le",
        "4.5.30-x86_64",
        "4.5.30-ppc64le",
        "4.5.30-s390x",
        "4.4.33-x86_64",
        "4.4.33-s390x",
        "4.4.33-ppc64le",
        "4.7.0-fc.5-ppc64le",
        "4.7.0-fc.5-x86_64",
        "4.7.0-fc.5-s390x",
        "4.6.16-x86_64",
        "4.6.16-s390x",
        "4.6.16-ppc64le",
        "4.5.31-x86_64",
        "4.5.31-s390x",
        "4.5.31-ppc64le",
        "4.7.0-rc.0-x86_64",
        "4.7.0-rc.0-ppc64le",
        "4.7.0-rc.0-s390x",
        "4.6.17-x86_64",
        "4.6.17-s390x",
        "4.6.17-ppc64le",
        "4.5.32-x86_64",
        "4.5.32-s390x",
        "4.5.32-ppc64le",
        "4.7.0-rc.1-x86_64",
        "4.7.0-rc.1-s390x",
        "4.7.0-rc.1-ppc64le",
        "4.7.0-rc.2-x86_64",
        "4.7.0-rc.2-s390x",
        "4.7.0-rc.2-ppc64le",
        "4.6.0-0.nightly-2021-02-12-212524",
        "4.6.18-x86_64",
        "4.6.18-s390x",
        "4.6.18-ppc64le",
        "4.7.0-rc.3-x86_64",
        "4.7.0-rc.3-s390x",
        "4.7.0-rc.3-ppc64le",
        "4.7.0-x86_64",
        "4.7.0-s390x",
        "4.7.0-ppc64le",
        "4.6.19-x86_64",
        "4.6.19-s390x",
        "4.6.19-ppc64le",
        "4.5.33-x86_64",
        "4.5.33-s390x",
        "4.5.33-ppc64le",
        "4.6.20-x86_64",
        "4.6.20-ppc64le",
        "4.6.20-s390x",
        "4.5.34-x86_64",
        "4.5.34-ppc64le",
        "4.5.34-s390x",
        "4.7.1-x86_64",
        "4.7.1-ppc64le",
        "4.7.1-s390x",
        "4.5.0-0.hotfix-2021-03-03-053631-x86_64",
        "4.7.2-x86_64",
        "4.7.2-s390x",
        "4.7.2-ppc64le",
        "4.6.21-x86_64",
        "4.6.21-s390x",
        "4.6.21-ppc64le",
        "4.5.35-x86_64",
        "4.5.35-s390x",
        "4.5.35-ppc64le",
        "4.7.3-x86_64",
        "4.7.3-s390x",
        "4.7.3-ppc64le",
        "4.6.22-x86_64",
        "4.6.22-s390x",
        "4.6.22-ppc64le",
        "4.5.36-x86_64",
        "4.5.36-ppc64le",
        "4.5.36-s390x",
        "4.6.23-x86_64",
        "4.6.23-s390x",
        "4.6.23-ppc64le",
        "4.7.4-x86_64",
        "4.7.4-ppc64le",
        "4.7.4-s390x",
        "4.7.5-x86_64",
        "4.7.5-s390x",
        "4.7.5-ppc64le",
        "4.5.37-x86_64",
        "4.5.37-s390x",
        "4.5.37-ppc64le",
        "4.7.6-x86_64",
        "4.7.6-s390x",
        "4.7.6-ppc64le",
        "4.6.24-x86_64",
        "4.6.24-ppc64le",
        "4.6.24-s390x",
        "4.7.7-x86_64",
        "4.7.7-s390x",
        "4.7.7-ppc64le",
        "4.6.25-x86_64",
        "4.6.25-ppc64le",
        "4.6.25-s390x",
        "4.8.0-fc.0-x86_64",
        "4.8.0-fc.0-ppc64le",
        "4.8.0-fc.0-s390x",
        "4.7.8-x86_64",
        "4.7.8-s390x",
        "4.7.8-ppc64le",
        "4.6.26-s390x",
        "4.6.26-x86_64",
        "4.6.26-ppc64le",
        "4.5.38-x86_64",
        "4.5.38-s390x",
        "4.5.38-ppc64le",
        "4.8.0-fc.1-x86_64",
        "4.8.0-fc.1-s390x",
        "4.8.0-fc.1-ppc64le",
        "4.7.9-x86_64",
        "4.7.9-s390x",
        "4.7.9-ppc64le",
        "4.6.27-x86_64",
        "4.6.27-s390x",
        "4.6.27-ppc64le",
        "4.8.0-fc.2-x86_64",
        "4.8.0-fc.2-s390x",
        "4.8.0-fc.2-ppc64le",
        "4.6.28-x86_64",
        "4.7.10-ppc64le",
        "4.7.10-s390x",
        "4.7.10-x86_64",
        "4.5.39-x86_64",
        "4.5.39-s390x",
        "4.5.39-ppc64le",
        "4.6.28-ppc64le",
        "4.6.28-s390x",
        "4.8.0-fc.3-s390x",
        "4.8.0-fc.3-x86_64",
        "4.8.0-fc.3-ppc64le",
        "4.6.29-x86_64",
        "4.6.29-ppc64le",
        "4.6.29-s390x",
        "4.7.11-x86_64",
        "4.7.11-ppc64le",
        "4.7.11-s390x",
        "4.8.0-fc.4-ppc64le",
        "4.8.0-fc.4-x86_64",
        "4.8.0-fc.4-s390x",
        "4.6.30-s390x",
        "4.6.30-x86_64",
        "4.6.30-ppc64le",
        "4.7.12-ppc64le",
        "4.7.12-x86_64",
        "4.7.12-s390x",
        "4.5.40-ppc64le",
        "4.5.40-s390x",
        "4.5.40-x86_64",
        "4.8.0-fc.5-ppc64le",
        "4.8.0-fc.5-x86_64",
        "4.8.0-fc.5-s390x",
        "4.6.31-x86_64",
        "4.6.31-s390x",
        "4.6.31-ppc64le",
        "4.7.13-s390x",
        "4.7.13-x86_64",
        "4.7.13-ppc64le",
        "4.8.0-fc.6-ppc64le",
        "4.8.0-fc.6-s390x",
        "4.8.0-fc.6-x86_64",
        "4.8.0-fc.7-x86_64",
        "4.8.0-fc.7-ppc64le",
        "4.8.0-fc.7-s390x",
        "4.6.32-ppc64le",
        "4.6.32-s390x",
        "4.6.32-x86_64",
        "4.7.14-s390x",
        "4.7.14-ppc64le",
        "4.7.14-x86_64",
        "4.8.0-fc.8-ppc64le",
        "4.8.0-fc.8-s390x",
        "4.8.0-fc.8-x86_64",
        "4.6.33-x86_64",
        "4.6.33-ppc64le",
        "4.6.33-s390x",
        "4.7.15-s390x",
        "4.7.15-x86_64",
        "4.7.15-ppc64le",
        "4.6.34-s390x",
        "4.6.34-ppc64le",
        "4.6.34-x86_64",
        "4.7.16-ppc64le",
        "4.7.16-x86_64",
        "4.7.16-s390x",
        "4.8.0-fc.9-x86_64",
        "4.8.0-fc.9-ppc64le",
        "4.8.0-fc.9-s390x",
        "4.8.0-rc.0-x86_64",
        "4.8.0-rc.0-ppc64le",
        "4.8.0-rc.0-s390x",
        "4.6.35-s390x",
        "4.6.35-ppc64le",
        "4.6.35-x86_64",
        "4.7.17-s390x",
        "4.7.17-ppc64le",
        "4.7.17-x86_64",
        "4.6.36-ppc64le",
        "4.6.36-x86_64",
        "4.6.36-s390x",
        "4.7.18-x86_64",
        "4.7.18-s390x",
        "4.7.18-ppc64le",
        "4.5.41-ppc64le",
        "4.5.41-x86_64",
        "4.5.41-s390x",
        "4.8.0-rc.1-ppc64le",
        "4.8.0-rc.1-x86_64",
        "4.8.0-rc.1-s390x",
        "4.6.37-s390x",
        "4.6.37-x86_64",
        "4.7.19-s390x",
        "4.7.19-ppc64le",
        "4.6.37-ppc64le",
        "4.7.19-x86_64",
        "4.8.0-rc.2-ppc64le",
        "4.8.0-rc.2-x86_64",
        "4.8.0-rc.2-s390x",
        "4.8.0-rc.3-x86_64",
        "4.8.0-rc.3-s390x",
        "4.8.0-rc.3-ppc64le",
        "4.6.38-s390x",
        "4.6.38-ppc64le",
        "4.6.38-x86_64",
        "4.7.20-ppc64le",
        "4.7.20-s390x",
        "4.7.20-x86_64",
        "4.8.0-ppc64le",
        "4.8.0-s390x",
        "4.8.0-x86_64",
        "4.6.39-s390x",
        "4.6.39-ppc64le",
        "4.6.39-x86_64",
        "4.7.21-ppc64le",
        "4.7.21-s390x",
        "4.7.21-x86_64",
        "4.8.1-x86_64",
        "4.8.1-ppc64le",
        "4.8.1-s390x",
        "4.6.40-s390x",
        "4.6.40-ppc64le",
        "4.6.40-x86_64",
        "4.7.0-assembly.art3091-ppc64le",
        "4.7.0-assembly.art3091-x86_64",
        "4.7.0-assembly.art3091-s390x",
        "4.8.2-ppc64le",
        "4.8.2-s390x",
        "4.8.2-x86_64",
        "4.7.22-s390x",
        "4.7.22-x86_64",
        "4.7.22-ppc64le",
        "4.8.3-ppc64le",
        "4.8.3-s390x",
        "4.8.3-x86_64",
        "4.6.41-s390x",
        "4.6.41-ppc64le",
        "4.6.41-x86_64",
        "4.7.23-x86_64",
        "4.7.23-s390x",
        "4.7.23-ppc64le",
        "4.8.4-ppc64le",
        "4.8.4-x86_64",
        "4.8.4-s390x",
        "4.6.42-s390x",
        "4.6.42-ppc64le",
        "4.6.42-x86_64",
        "4.7.24-ppc64le",
        "4.7.24-s390x",
        "4.7.24-x86_64",
        "4.8.5-s390x",
        "4.8.5-x86_64",
        "4.8.5-ppc64le",
        "4.8.6-ppc64le",
        "4.8.6-x86_64",
        "4.8.6-s390x",
        "4.7.25-ppc64le",
        "4.7.25-x86_64",
        "4.7.25-s390x",
        "4.6.43-s390x",
        "4.6.43-ppc64le",
        "4.6.43-x86_64",
        "4.8.0-assembly.hack-x86_64",
        "4.9.0-fc.0-x86_64",
        "4.9.0-fc.0-s390x",
        "4.9.0-fc.0-ppc64le",
        "4.9.0-fc.0-aarch64",
        "4.8.7-ppc64le",
        "4.8.7-s390x",
        "4.8.7-x86_64",
        "4.7.26-ppc64le",
        "4.7.26-x86_64",
        "4.7.26-s390x",
        "4.7.27-ppc64le",
        "4.7.27-s390x",
        "4.7.27-x86_64",
        "4.8.8-ppc64le",
        "4.8.8-x86_64",
        "4.8.8-s390x",
        "4.8.9-s390x",
        "4.8.9-x86_64",
        "4.8.9-ppc64le",
        "4.7.28-s390x",
        "4.7.28-ppc64le",
        "4.7.28-x86_64",
        "4.8.10-s390x",
        "4.8.10-ppc64le",
        "4.8.10-x86_64",
        "4.9.0-fc.1-x86_64",
        "4.9.0-fc.1-ppc64le",
        "4.9.0-fc.1-aarch64",
        "4.7.29-s390x",
        "4.7.29-x86_64",
        "4.7.29-ppc64le",
        "4.6.44-ppc64le",
        "4.6.44-s390x",
        "4.6.44-x86_64",
        "4.9.0-rc.0-s390x",
        "4.9.0-rc.0-ppc64le",
        "4.9.0-rc.0-aarch64",
        "4.9.0-rc.0-x86_64",
        "4.7.30-s390x",
        "4.7.30-ppc64le",
        "4.7.30-x86_64",
        "4.8.11-s390x",
        "4.8.11-ppc64le",
        "4.8.11-x86_64",
        "4.9.0-rc.1-aarch64",
        "4.9.0-rc.1-x86_64",
        "4.9.0-rc.1-s390x",
        "4.9.0-rc.1-ppc64le"
    ],
    "Created": "2021-08-26T23:25:16Z",
    "DockerVersion": "1.13.1",
    "Labels": {
        "io.openshift.release": "4.8.8",
        "io.openshift.release.base-image-digest": "sha256:17681225ba94bd348915893f1eed45976b8ed6ae1a207ae22c7b492498294eab"
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:296e14ee24149e14d573a1fbf5b5a625c7bb0cc22f5b2a8b180e833258187948",
        "sha256:356f18f3a935b2f226093720b65383048249413ed99da72c87d5be58cc46661c",
        "sha256:f6a710ddf2c766a4aff773e11ebae88c384dbfc2ead8eb2bbb2d4d3b23530752",
        "sha256:cfb9a7e66a741948bbef0e6e73030ba78773aef723e119027935404f07c6e0fc",
        "sha256:a3047858809f28de2e62fe74254953c37c54ba729ed700ff28f87fc1fb58835a",
        "sha256:78561789f9b46fbef660255c11116b9d039ba94bde18ec09889861546b74bd23"
    ],
    "Env": [
        "__doozer=merge",
        "BUILD_RELEASE=202108130208.p0.git.ea6e779.assembly.stream",
        "BUILD_VERSION=v4.8.0",
        "OS_GIT_MAJOR=4",
        "OS_GIT_MINOR=8",
        "OS_GIT_PATCH=0",
        "OS_GIT_TREE_STATE=clean",
        "OS_GIT_VERSION=4.8.0-202108130208.p0.git.ea6e779.assembly.stream-ea6e779",
        "SOURCE_GIT_TREE_STATE=clean",
        "OS_GIT_COMMIT=ea6e779",
        "SOURCE_DATE_EPOCH=1623357496",
        "SOURCE_GIT_COMMIT=ea6e779ef89710879e2c08c0e5847a5b5e860b28",
        "SOURCE_GIT_TAG=v1.0.0-553-gea6e779e",
        "SOURCE_GIT_URL=https://github.com/openshift/cluster-version-operator",
        "GODEBUG=x509ignoreCN=0,madvdontneed=1",
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        "container=oci"
    ]
}

@mtrmac
Copy link
Contributor

mtrmac commented Sep 14, 2021

Thanks for your report.

it would be nice maybe to add some flag so that skopeo would copy the image without modifying its digest.

That’s tracked as #1378 ; but it also doesn’t much help with your immediate concerns.


so to transfer the image to the restricted environment we create custom registry:

Yes; I’d generally recommend that approach, because it is mostly format-agnostic and allows sharing blobs across images, i.e. decreases the mirroring time and transfer size.


skopeo copy --all --dest-tls-verify=false docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker://localhost:5000/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f

(BTW OpenShift has its own mirroring tools that might be easier to use specifically for that product, especially taking OCP release signing into account.)


as you can see the process is very difficult,

To me, this seems like something fairly easy to wrap in a script, if necessary (and if the OCP oc mirroring commands aren’t sufficient.)


and if we try to save the image as a file straight, the digest would change:

skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:d7a39773aec3cb5e3599be828ac101e062c0b587c9e922ed1f3a8cc71b01a93f docker-archive:image.tar

I’m afraid that isn’t going to work. docker-archive just can’t represent a multi-arch image, or preserve a compression format; besides, it’s very inefficient to use. I wouldn’t recommend using it for any purpose other than directly interoperating with a Docker daemon if a registry can’t be used.

The temporary registry approach you have outlined above is what I‘d generally recommend for mirroring a set of images; if that’s not an option, use an individual dir: instead of docker-archive:.

@zfrhv
Copy link
Author

zfrhv commented Sep 14, 2021

(BTW OpenShift has its own mirroring tools that might be easier to use specifically for that product, especially taking OCP release signing into account.)

yes but their tools also change the digest, I opened a case for them and they still didnt wanted to update their documentation / fix their tool. (i thought maybe first skopeo will create something cool and then I will just suggest them to use it)


To me, this seems like something fairly easy to wrap in a script, if necessary (and if the OCP oc mirroring commands aren’t sufficient.)

we made a lot of scrips, but the process is still pretty difficult, because we always end up with a lot of registries listening on a lot of ports, and a lot of directories for registries datas, and no one knows what where why and how.

The temporary registry approach you have outlined above is what I‘d generally recommend for mirroring a set of images; if that’s not an option, use an individual dir: instead of docker-archive:.

its looks like its exactly what we need, it will be amazing to save straight on the disk instead of creating a registry each time.

i tried to use the dir option but im getting errors:

> skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:53576e4df71a5f00f77718f25aec6ac7946eaaab998d99d3e3f03fcb403364db dir:images-dir
Getting image source signatures
Copying blob 296e14ee2414 done
Copying blob 356f18f3a935 done
Copying blob f6a710ddf2c7 done
Copying blob a657ed959f1e done
Copying blob 35c920a0e265 done
Copying blob cd401f99ebcc done
Copying config 1733883a81 done
Writing manifest to image destination
Storing signatures


> skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:26f9da8c2567ddf15f917515008563db8b3c9e43120d3d22f9d00a16b0eb9b97 dir:images-dir
Getting image source signatures
Copying blob 296e14ee2414 done
Copying blob 356f18f3a935 done
Copying blob f6a710ddf2c7 done
Copying blob a657ed959f1e done
Copying blob 35c920a0e265 done
Copying blob ec0e6f555ca1 done
Copying config 6d4f706685 done
Writing manifest to image destination
Storing signatures


> skopeo copy --all --dest-tls-verify=false dir:images-dir docker://localhost:5000/openshift-release-dev/ocp-release@sha256:26f9da8c2567ddf15f917515008563db8b3c9e43120d3d22f9d00a16b0eb9b97
Getting image source signatures
Copying blob 296e14ee2414 [--------------------------------------] 0.0b / 79.5MiB
Copying blob 356f18f3a935 [--------------------------------------] 0.0b / 1.8KiB
Copying blob f6a710ddf2c7 [--------------------------------------] 0.0b / 1.8MiB
Copying blob a657ed959f1e [--------------------------------------] 0.0b / 10.7MiB
Copying blob 35c920a0e265 [--------------------------------------] 0.0b / 21.2MiB
FATA[0000] Error writing blob: Error initiating layer upload to /v2/openshift-release-dev/ocp-release/blobs/uploads/ in localhost:5000: received unexpected HTTP status: 500 Internal Server Error


> skopeo copy --all --dest-tls-verify=false dir:images-dir docker://localhost:5000
Getting image source signatures
FATA[0006] Error trying to reuse blob sha256:296e14ee24149e14d573a1fbf5b5a625c7bb0cc22f5b2a8b180e833258187948 at destination: Error checking whether a blob sha256:296e14ee24149e14d573a1fbf5b5a625c7bb0cc22f5b2a8b180e833258187948 exists in docker.io/library/localhost: errors:
denied: requested access to the resource is denied
error parsing HTTP 401 response body: unexpected end of JSON input: ""

sorry if im doing something wrong, its my first time using the dir option.

@mtrmac
Copy link
Contributor

mtrmac commented Sep 14, 2021

That’s a bit surprising, but it seems related to the registry and not to dir: use.

Just to be sure, note that a dir: can only hold one (possibly multi-arch) image, a single directory can’t be used to copy multiple of them. (So, they also don’t share layers, and waste space. A registry really is better.)

@zfrhv
Copy link
Author

zfrhv commented Sep 14, 2021

tried to start over:

> skopeo copy --all docker://quay.io/openshift-release-dev/ocp-release@sha256:53576e4df71a5f00f77718f25aec6ac7946eaaab998d99d3e3f03fcb403364db dir:images-dir
Getting image source signatures
Copying blob 296e14ee2414 done
Copying blob 356f18f3a935 done
Copying blob f6a710ddf2c7 done
Copying blob a657ed959f1e done
Copying blob 35c920a0e265 done
Copying blob cd401f99ebcc done
Copying config 1733883a81 done
Writing manifest to image destination
Storing signatures


> skopeo copy --all --dest-tls-verify=false dir:images-dir docker://localhost:5000/openshift-release-dev/ocp-release@sha256:53576e4df71a5f00f77718f25aec6ac7946eaaab998d99d3e3f03fcb403364db
Getting image source signaturesGetting image source signatures
Copying blob 296e14ee2414 [--------------------------------------] 0.0b / 79.5MiB
Copying blob 356f18f3a935 [--------------------------------------] 0.0b / 1.8KiB
Copying blob f6a710ddf2c7 [--------------------------------------] 0.0b / 1.8MiB
Copying blob a657ed959f1e [--------------------------------------] 0.0b / 10.7MiB
FATA[0000] Error writing blob: Error initiating layer upload to /v2/openshift-release-dev/ocp-release/blobs/uploads/ in localhost:5000: received unexpected HTTP status: 500 Internal Server Error

but if i can store only 1 image in the dir then its not really helping :/

may it be possible to make that i could store a lot of images with the dir option? or its like doing exactly what the registry does and its too much work?

the copying images to the registry method is great, but it gets more complicated as time passes and we start to get a lot of registries, would be amazing to straight save the images as some file/directory without changing the digest. makes everything very simple and organized.

@mtrmac
Copy link
Contributor

mtrmac commented Sep 14, 2021

skopeo copy --all --dest-tls-verify=false dir:images-dir docker://localhost:5000/openshift-release-dev/ocp-release@sha256:53576e4df71a5f00f77718f25aec6ac7946eaaab998d99d3e3f03fcb403364db

I have just tested that, and it works for me. “Internal server error” really needs to be resolved server-side; what do the logs for that operation say?


may it be possible to make that i could store a lot of images with the dir option? or its like doing exactly what the registry does and its too much work?

Basically: the registry code works and is well-tested, including some non-trivial aspects like pulling multiple layers in parallel; maintaining a separate file implementation path, has, so far, seemed unnecessary.


the copying images to the registry method is great, but it gets more complicated as time passes and we start to get a lot of registries

Temporarily start the registry on localhost with a specific directory mounted as the registry’s storage (as the example above does with /var/registry-data/docker ), then terminate the registry server but maintain the created directory structure. The server only needs to run for the duration of the copy; the files can be just used as files afterward.

@zfrhv
Copy link
Author

zfrhv commented Sep 14, 2021

I have just tested that, and it works for me. “Internal server error” really needs to be resolved server-side; what do the logs for that operation say?

looks like i had some problem with the registry storage, i recreated it and everything works now, thanks!


Basically: the registry code works and is well-tested, including some non-trivial aspects like pulling multiple layers in parallel; maintaining a separate file implementation path, has, so far, seemed unnecessary.

then I guess the registry method is really the best solution. thanks for clarifying everything.

@zfrhv zfrhv closed this as completed Sep 14, 2021
Jamstah added a commit to Jamstah/image that referenced this issue Nov 21, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 21, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 21, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 22, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 22, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 22, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 22, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 26, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
Jamstah added a commit to Jamstah/image that referenced this issue Nov 26, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
nlewo pushed a commit to nlewo/image that referenced this issue Dec 26, 2021
A digest-stable copy seems popular, even when not copying signed images.
Using --all can still change digests. Adding an option to ensure digests
are preserved.

Also adding a missing check to enable digest preservation for manifest
lists where the destination is digested.

See:
containers/skopeo#1440
containers/skopeo#1378
containers/skopeo#1102
containers/skopeo#1451

Signed-off-by: James Hewitt <[email protected]>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 19, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants