From a7557326dc019341662f6e00e732d2fae21b0cb7 Mon Sep 17 00:00:00 2001 From: wangyueliang Date: Mon, 15 Jul 2024 18:13:09 +0800 Subject: [PATCH] Backport: push-container: supports pushing container images through multiple transports and supports insecure registry [origInfo] backport from v0.13.0.x f6264690 push-container:fix push to docker-daemon error 5c6daef1 push-container: supports pushing container images through multiple transports 0d4902cb push-container: modified to a more universal usage, supporting insecure registry --- src/cmd-push-container | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/cmd-push-container b/src/cmd-push-container index 072cead9..510b4238 100755 --- a/src/cmd-push-container +++ b/src/cmd-push-container @@ -17,6 +17,14 @@ sys.path.insert(0, cosa_dir) from cosalib import cmdlib +transports = { + 'podman':'containers-storage:', + 'dir':'dir:', + 'registry':'docker://', + 'docker-archive':'docker-archive:', + 'docker':'docker-daemon:', +} + parser = argparse.ArgumentParser() parser.add_argument("--authfile", help="Authentication file", action='store') @@ -27,6 +35,9 @@ parser.add_argument("--image", default='ostree', help="Container image to push", # add for nestos parser.add_argument("-d","--dest-repository", help="The destination repository to push") parser.add_argument("--no-tls-verify", help="Don't verify the destination repository TLS when specified",action="store_true") +parser.add_argument("--transport", help="destination image transport, support: \ + podman, dir, registry, docker-archive, docker", + default='registry') args = parser.parse_args() @@ -60,17 +71,19 @@ else: container_name, container_tag = args.name.rsplit(':') if args.tag_suffix: container_tag = f"{container_tag}-{args.tag_suffix}" +if args.no_tls_verify: + skopeoargs.extend(["--insecure-policy"]) + skopeoargs.extend(["--dest-tls-verify=false"]) +if args.transport not in transports.keys(): + print(f"Not supported transport:{args.transport}") + exit(1) with tempfile.NamedTemporaryFile(dir='tmp', prefix='push-container-digestfile') as df: skopeoargs.append(f"--digestfile={df.name}") # TODO: to test for private registry if args.dest_repository: - skopeoargs.extend([f"oci-archive:{ociarchive}", f"docker://{args.dest_repository}/{container_name}:{container_tag}"]) + skopeoargs.extend([f"oci-archive:{ociarchive}", f"{transports[args.transport]}{args.dest_repository}/{container_name}:{container_tag}"]) else: - skopeoargs.extend([f"oci-archive:{ociarchive}", f"docker://{container_name}:{container_tag}"]) - if args.no_tls_verify: - skopeoargs.extend(["--insecure-policy"]) - skopeoargs.extend(["--dest-tls-verify=false"]) - + skopeoargs.extend([f"oci-archive:{ociarchive}", f"{transports[args.transport]}{container_name}:{container_tag}"]) print(subprocess.list2cmdline(skopeoargs)) subprocess.check_call(skopeoargs) df.seek(0) -- Gitee