{"id":20284495,"url":"https://github.com/artyom/merge-docker-save","last_synced_at":"2026-05-05T16:02:57.582Z","repository":{"id":43843766,"uuid":"103746575","full_name":"artyom/merge-docker-save","owner":"artyom","description":"Command to export docker image filesystem from the docker save output.","archived":false,"fork":false,"pushed_at":"2018-05-17T18:07:35.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-14T07:53:56.324Z","etag":null,"topics":["docker","export","filesystem"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artyom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-16T11:17:42.000Z","updated_at":"2023-01-11T03:26:01.000Z","dependencies_parsed_at":"2022-09-26T18:01:32.354Z","dependency_job_id":null,"html_url":"https://github.com/artyom/merge-docker-save","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom%2Fmerge-docker-save","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom%2Fmerge-docker-save/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom%2Fmerge-docker-save/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artyom%2Fmerge-docker-save/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artyom","download_url":"https://codeload.github.com/artyom/merge-docker-save/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241780465,"owners_count":20019058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","export","filesystem"],"created_at":"2024-11-14T14:19:57.221Z","updated_at":"2026-05-05T16:02:57.518Z","avatar_url":"https://github.com/artyom.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"Command `merge-docker-save` repacks output of the docker save command called for a single image to a tar stream with merged content of all image layers.\n\nCommand `docker save` outputs [docker-specific tar stream](https://github.com/moby/moby/blob/master/image/spec/v1.2.md):\n\n\t$ docker save alpine:latest | tar tv |head\n\tdrwxr-xr-x 0/0               0 2017-09-13 14:32 030cf30aac0be224d6b7e02ca2b7cadf1d078bf90ef1e9656ff54a924a5f163a/\n\t-rw-r--r-- 0/0               3 2017-09-13 14:32 030cf30aac0be224d6b7e02ca2b7cadf1d078bf90ef1e9656ff54a924a5f163a/VERSION\n\t-rw-r--r-- 0/0            1184 2017-09-13 14:32 030cf30aac0be224d6b7e02ca2b7cadf1d078bf90ef1e9656ff54a924a5f163a/json\n\t-rw-r--r-- 0/0         4220928 2017-09-13 14:32 030cf30aac0be224d6b7e02ca2b7cadf1d078bf90ef1e9656ff54a924a5f163a/layer.tar\n\t-rw-r--r-- 0/0            1512 2017-09-13 14:32 76da55c8019d7a47c347c0dceb7a6591144d232a7dd616242a367b8bed18ecbc.json\n\t-rw-r--r-- 0/0             202 1970-01-01 00:00 manifest.json\n\t-rw-r--r-- 0/0              89 1970-01-01 00:00 repositories\n\nCommand `merge-docker-save` transforms this output to produce tar stream with container filesystem:\n\n\t$ docker save alpine:latest | merge-docker-save | tar tv |head\n\tdrwxr-xr-x 0/0               0 2017-06-25 17:52 bin/\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/ash -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/base64 -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/bbconfig -\u003e /bin/busybox\n\t-rwxr-xr-x 0/0          825504 2017-06-11 06:38 bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/cat -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/catv -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/chgrp -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/chmod -\u003e /bin/busybox\n\tlrwxrwxrwx 0/0               0 2017-06-25 17:52 bin/chown -\u003e /bin/busybox\n\n## Known limits\n\nCommand only supports `docker save` output for a single image, i.e. piping `docker save alpine:latest` works, but `docker save alpine` may not if it outputs multiple images.\n\nThis tool uses system default directory to store temporary files, which can be overridden by setting `$TMPDIR` environment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom%2Fmerge-docker-save","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartyom%2Fmerge-docker-save","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartyom%2Fmerge-docker-save/lists"}