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

Output of 'docker save' is not deterministic #42766

Open
bpascard opened this issue Aug 21, 2021 · 13 comments
Open

Output of 'docker save' is not deterministic #42766

bpascard opened this issue Aug 21, 2021 · 13 comments
Labels
area/images kind/enhancement Enhancements are not bugs or new features but can improve usability or performance.

Comments

@bpascard
Copy link
Contributor

Description

According to #8819, I assumed the output of docker save to be deterministic.
I noticed with some images that the output is not deterministic, successive calls to docker save with the same image output tarfiles with different hash values.

Steps to reproduce the issue:

  1. Create a Dockerfile
FROM centos
RUN echo Hello > /test.txt
RUN chmod 0755 /test.txt
RUN chmod 0755 /test.txt
  1. docker build -t test .
  2. Compare hashes, each docker save is different
>docker save test | sha1sum
b54a37d5a166efdacc9ce1a5941d76939a540fbf  -
>docker save test | sha1sum
ae400ff4607318c2f02df067dfc5f6a8fd3e0cbe  -

Describe the results you received:
Output of docker save is not deterministic, hashes are different.

Describe the results you expected:
I expected the hashes to be the same.

Additional information you deem important :

The issue appears when layers have the same diffID : docker save creates a symlink to the duplicate layer.tar but the symlink's Created/Modified timestamps are not set to deterministic values causing the tarfiles hash value to change on each call to docker save. Here layer c5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86 is causing the tarfiles's hash to change.

>docker save -o test.tar
>tar --list -v -f test.tar
drwxr-xr-x  0 0      0           0 21 aoû 03:38 043d10311d47bbfdb9b74c0c3491290c033e1a9d1d06871a1b513d3d2d28fced/
-rw-r--r--  0 0      0           3 21 aoû 03:38 043d10311d47bbfdb9b74c0c3491290c033e1a9d1d06871a1b513d3d2d28fced/VERSION
-rw-r--r--  0 0      0         477 21 aoû 03:38 043d10311d47bbfdb9b74c0c3491290c033e1a9d1d06871a1b513d3d2d28fced/json
-rw-r--r--  0 0      0        2048 21 aoû 03:38 043d10311d47bbfdb9b74c0c3491290c033e1a9d1d06871a1b513d3d2d28fced/layer.tar
-rw-r--r--  0 0      0        1736 21 aoû 03:38 101fbd5389e8aca3865be160a9988332eaed0206f5786da8303af71a5ab4bb49.json
drwxr-xr-x  0 0      0           0 21 aoû 03:38 12bde4e7a1f7ae755c6e4b792ec0cfaa5f54ff6ab232583e9111523c1f9b5b9b/
-rw-r--r--  0 0      0           3 21 aoû 03:38 12bde4e7a1f7ae755c6e4b792ec0cfaa5f54ff6ab232583e9111523c1f9b5b9b/VERSION
-rw-r--r--  0 0      0         477 21 aoû 03:38 12bde4e7a1f7ae755c6e4b792ec0cfaa5f54ff6ab232583e9111523c1f9b5b9b/json
-rw-r--r--  0 0      0        2048 21 aoû 03:38 12bde4e7a1f7ae755c6e4b792ec0cfaa5f54ff6ab232583e9111523c1f9b5b9b/layer.tar
drwxr-xr-x  0 0      0           0 21 aoû 03:38 b5ad3981919b474c18caec8885fc124b01bc7c3e7fa19738cbfae253a22d4a16/
-rw-r--r--  0 0      0           3 21 aoû 03:38 b5ad3981919b474c18caec8885fc124b01bc7c3e7fa19738cbfae253a22d4a16/VERSION
-rw-r--r--  0 0      0         401 21 aoû 03:38 b5ad3981919b474c18caec8885fc124b01bc7c3e7fa19738cbfae253a22d4a16/json
-rw-r--r--  0 0      0   216524800 21 aoû 03:38 b5ad3981919b474c18caec8885fc124b01bc7c3e7fa19738cbfae253a22d4a16/layer.tar
drwxr-xr-x  0 0      0           0 21 aoû 03:44 c5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86/
-rw-r--r--  0 0      0           3 21 aoû 03:44 c5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86/VERSION
-rw-r--r--  0 0      0        1046 21 aoû 03:44 c5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86/json
lrwxrwxrwx  0 0      0           0 21 aoû 03:44 c5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86/layer.tar -> ../043d10311d47bbfdb9b74c0c3491290c033e1a9d1d06871a1b513d3d2d28fced/layer.tar
-rw-r--r--  0 0      0         431  1 jan  1970 manifest.json
-rw-r--r--  0 0      0          87  1 jan  1970 repositories

Output of docker version:

Client:
 Cloud integration: 1.0.17
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:20 2021
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:10 2021
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Output of docker info:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  compose: Docker Compose (Docker Inc., v2.0.0-rc.1)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 9
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e25210fe30a0a703442421b0f60afac609f950a3
 runc version: v1.0.1-0-g4144b63
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.47-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.94GiB
 Name: docker-desktop
 ID: QPEN:2HA7:EDWB:N4DO:UVGL:O52F:V66E:OB3Q:RDPN:TNHM:5XV6:5EUA
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 42
  Goroutines: 44
  System Time: 2021-08-21T01:42:12.6156677Z
  EventsListeners: 3
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
@AkihiroSuda AkihiroSuda added area/images kind/enhancement Enhancements are not bugs or new features but can improve usability or performance. labels Aug 21, 2021
@dkkb
Copy link
Contributor

dkkb commented Aug 27, 2021

It is deterministic on my MacBook.

🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:54:53
2e3b1cba829a46407e3553119783e2ee1c3255d8  -
🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:55:14
2e3b1cba829a46407e3553119783e2ee1c3255d8  -

@bpascard
Copy link
Contributor Author

bpascard commented Aug 27, 2021

It is deterministic on my MacBook.

🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:54:53
2e3b1cba829a46407e3553119783e2ee1c3255d8  -
🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:55:14
2e3b1cba829a46407e3553119783e2ee1c3255d8  -

@dkkb Did you use the exact same Dockerfile I used? Using 'centos' as a base image is critical to reproduce. With 'debian', 'ubuntu' and 'alpine' the tarfile is deterministic.

@dkkb
Copy link
Contributor

dkkb commented Aug 30, 2021

It is deterministic on my MacBook.

🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:54:53
2e3b1cba829a46407e3553119783e2ee1c3255d8  -
🐳  da ~/docker
➜ docker save test | sha1sum                                                                                   19:55:14
2e3b1cba829a46407e3553119783e2ee1c3255d8  -

@dkkb Did you use the exact same Dockerfile I used? Using 'centos' as a base image is critical to reproduce. With 'debian', 'ubuntu' and 'alpine' the tarfile is deterministic.

No, I just tried to use centos as base image, it's not deterministic, that's weird.

@zq-david-wang
Copy link
Contributor

Interesting findings.
But it happens with all kind of base images, ubuntu, alpine.... not only with centos base image. it depends on the accuracy of your filesystem timestamping and how fast your CPU. On my laptop, the filesystem register the modification timestamp with precision of 1ms, meaning two consecutive touch commands on a same file make no change at all to the file if those two touch command happened within same ms.

This dockerfile should reproduce it on all kind of base images after adding enough touch command

FROM alpine
RUN touch /t
RUN touch /t
RUN touch /t
RUN touch /t
RUN touch /t
RUN touch /t
RUN touch /t
...

And docker inspect should show that in the image there are several groups of layers, and in each group, those layers are the same.

I think the real issue is why docker build would keep those duplicated layers..... maybe for future build cache usage?

@thaJeztah
Copy link
Member

I think the real issue is why docker build would keep those duplicated layers..... maybe for future build cache usage?

I was chatting about that Yesterday, and the duplicate layers may be needed for backward compatibility.

@bpascard
Copy link
Contributor Author

bpascard commented Sep 1, 2021

I think the real issue is why docker build would keep those duplicated layers..... maybe for future build cache usage?

Agreed, docker save wouldn't even need to create symlinks to de-duplicate identical layers in the first place.

But image/tarexport/save.go already goes to great lengths to ensure the tar content is deterministic by setting file timestamps for each layer, manifest.json & repositories. I think it'd be a less impactful fix to also set timestamps on layer symlinks during docker save.

@zq-david-wang
Copy link
Contributor

It seems not that easy to fix.... golang currently has no api to change timestamp for a symbol link. I create a PR for docker and another PR for golang(linux), it would needs both fix to address this issue on linux.
#42810
golang/go#48138

@thaJeztah
Copy link
Member

Thanks for looking into this! Given that Golang has frozen the syscall package, should those changes be contributed to golang.org/x/sys ? Looking at the x/sys repository, I see they already have a UtimesNanoAt function, which allows passing flags; https://github.com/golang/sys/blob/f475640dd07b1f334edaf5dc3d7e1ec3ae954d41/unix/syscall_linux.go#L170-L182

@zq-david-wang
Copy link
Contributor

@thaJeztah it is a sad thing that syscall package is frozen... the effect of utimensat on a symbol link is not even documented....
But x/sys/unix is a platform dependent package, feel uneasy to use it directly in docker save.....

@bpascard
Copy link
Contributor Author

bpascard commented Sep 6, 2021

But x/sys/unix is a platform dependent package, feel uneasy to use it directly in docker save.....

Apparently they already rejected a proposal to add a portable solution in golang/go#30487. They have a Lutimes function (based on UtimesNanoAt) to do just that.

https://github.com/golang/sys/blob/f475640dd07b1f334edaf5dc3d7e1ec3ae954d41/unix/syscall_unix.go#L423-L435

@zq-david-wang
Copy link
Contributor

@bpascard #42810 is now using UtimesNanoAt from golang.org/x/sys/unix and resort to os.Chtime if "NOFOLLOW" is not supported,

@janisz
Copy link

janisz commented Jun 28, 2023

I'm not sure if this is related but I found odd behaviour when downloading image with and without a tag. As you can see without tag layers are duplicated. Any reason why?

$ docker image save quay.io/stackrox-io/roxctl:latest  | tar -tvh
drwxr-xr-x 0/0               0 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/
-rw-r--r-- 0/0               3 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/VERSION
-rw-r--r-- 0/0             406 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/json
-rw-r--r-- 0/0        78190080 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/layer.tar
drwxr-xr-x 0/0               0 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/
-rw-r--r-- 0/0               3 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/VERSION
-rw-r--r-- 0/0            1382 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/json
-rw-r--r-- 0/0          218112 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/layer.tar
-rw-r--r-- 0/0            2288 2023-06-28 19:06 ebc96fef7bd4c0931c998964ed9e8ecf78bc36a4ef46b1abec605a7851eefdd0.json
-rw-r--r-- 0/0             299 1970-01-01 01:00 manifest.json
-rw-r--r-- 0/0             109 1970-01-01 01:00 repositories
$ docker image save quay.io/stackrox-io/roxctl  | tar -tvh 
drwxr-xr-x 0/0               0 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/
-rw-r--r-- 0/0               3 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/VERSION
-rw-r--r-- 0/0             406 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/json
-rw-r--r-- 0/0        78190080 2023-06-28 19:06 1ef34d8c7fd5de7b76315c66d22a3abc1735e6d7ee5193f5809f86021fca2ab3/layer.tar
drwxr-xr-x 0/0               0 2023-06-28 20:10 3cf0c864023e87ebc47db6173d2c6bc9c8c8215f3f5acac00d6c9e53990f93cc/
-rw-r--r-- 0/0               3 2023-06-28 20:10 3cf0c864023e87ebc47db6173d2c6bc9c8c8215f3f5acac00d6c9e53990f93cc/VERSION
-rw-r--r-- 0/0             927 2023-06-28 20:10 3cf0c864023e87ebc47db6173d2c6bc9c8c8215f3f5acac00d6c9e53990f93cc/json
-rw-r--r-- 0/0          218112 2023-06-28 20:10 3cf0c864023e87ebc47db6173d2c6bc9c8c8215f3f5acac00d6c9e53990f93cc/layer.tar
drwxr-xr-x 0/0               0 2023-06-28 20:10 42686c8710b690ef8de5dd8f3f520b21a233497007c417f5dfce04d777c63374/
-rw-r--r-- 0/0               3 2023-06-28 20:10 42686c8710b690ef8de5dd8f3f520b21a233497007c417f5dfce04d777c63374/VERSION
-rw-r--r-- 0/0             406 2023-06-28 20:10 42686c8710b690ef8de5dd8f3f520b21a233497007c417f5dfce04d777c63374/json
-rw-r--r-- 0/0        78173696 2023-06-28 20:10 42686c8710b690ef8de5dd8f3f520b21a233497007c417f5dfce04d777c63374/layer.tar
-rw-r--r-- 0/0            2288 2023-06-28 14:35 7a3d64af1cc3f7ab0841e318096fe464a50b20cdb4672085189aae01eb9865df.json
drwxr-xr-x 0/0               0 2023-06-28 14:35 835a015b9736f444a6e66bbc2a17d428c007e617e8ecaf56314ab68a841f9128/
-rw-r--r-- 0/0               3 2023-06-28 14:35 835a015b9736f444a6e66bbc2a17d428c007e617e8ecaf56314ab68a841f9128/VERSION
-rw-r--r-- 0/0             406 2023-06-28 14:35 835a015b9736f444a6e66bbc2a17d428c007e617e8ecaf56314ab68a841f9128/json
-rw-r--r-- 0/0        78190080 2023-06-28 14:35 835a015b9736f444a6e66bbc2a17d428c007e617e8ecaf56314ab68a841f9128/layer.tar
drwxr-xr-x 0/0               0 2023-06-28 14:35 84c1e5d042dd244f8989e5256b1c008b981c3b810dd53ce7856814e1d4520a49/
-rw-r--r-- 0/0               3 2023-06-28 14:35 84c1e5d042dd244f8989e5256b1c008b981c3b810dd53ce7856814e1d4520a49/VERSION
-rw-r--r-- 0/0            1382 2023-06-28 14:35 84c1e5d042dd244f8989e5256b1c008b981c3b810dd53ce7856814e1d4520a49/json
-rw-r--r-- 0/0          218112 2023-06-28 14:35 84c1e5d042dd244f8989e5256b1c008b981c3b810dd53ce7856814e1d4520a49/layer.tar
drwxr-xr-x 0/0               0 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/
-rw-r--r-- 0/0               3 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/VERSION
-rw-r--r-- 0/0            1382 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/json
-rw-r--r-- 0/0          218112 2023-06-28 19:06 b037d1740b11ee612dbe2fa41b8df51ecb4912fe597445f7b99243b13fb1f753/layer.tar
-rw-r--r-- 0/0            1292 2023-06-28 20:10 c5d32ff622eac469dcf598f0311bfc51f57c01f0b7e1b8719a8e54bf1a225a72.json
-rw-r--r-- 0/0            2288 2023-06-28 19:06 ebc96fef7bd4c0931c998964ed9e8ecf78bc36a4ef46b1abec605a7851eefdd0.json
-rw-r--r-- 0/0             883 1970-01-01 01:00 manifest.json
-rw-r--r-- 0/0             208 1970-01-01 01:00 repositories

@myback
Copy link

myback commented Nov 8, 2023

if the image has symlink to another layer when docker save command is not deterministic. Layer 213fd8ee6... has local m_time

~ docker pull redis/redis-stack
~ docker save redis/redis-stack | tar tv && sleep 60 && docker save redis/redis-stack | tar tv

-rw-r--r--  0 0      0        6031 Nov  1 21:52 1915167b30ba9aa7e01b23476a0c475624d749bd75b905778ac9fbb6e357d553.json
drwxr-xr-x  0 0      0           0 Nov  8 14:10 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/
-rw-r--r--  0 0      0           3 Nov  8 14:10 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/VERSION
-rw-r--r--  0 0      0         477 Nov  8 14:10 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/json
lrwxrwxrwx  0 0      0           0 Nov  8 14:10 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/layer.tar -> ../ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/
-rw-r--r--  0 0      0           3 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/json
-rw-r--r--  0 0      0        3072 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/
-rw-r--r--  0 0      0           3 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/json
-rw-r--r--  0 0      0     8160768 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/
-rw-r--r--  0 0      0           3 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/json
-rw-r--r--  0 0      0    47606272 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/
-rw-r--r--  0 0      0           3 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/json
-rw-r--r--  0 0      0        4096 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/
-rw-r--r--  0 0      0           3 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/json
-rw-r--r--  0 0      0    45671424 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/
-rw-r--r--  0 0      0           3 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/json
-rw-r--r--  0 0      0        2560 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/
-rw-r--r--  0 0      0           3 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/json
-rw-r--r--  0 0      0        3072 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/
-rw-r--r--  0 0      0           3 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/json
-rw-r--r--  0 0      0   302291456 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/
-rw-r--r--  0 0      0           3 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/json
-rw-r--r--  0 0      0   129050112 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/
-rw-r--r--  0 0      0           3 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/json
-rw-r--r--  0 0      0        1536 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/
-rw-r--r--  0 0      0           3 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/VERSION
-rw-r--r--  0 0      0         401 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/json
-rw-r--r--  0 0      0    80347136 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/
-rw-r--r--  0 0      0           3 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/json
-rw-r--r--  0 0      0   155566592 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/
-rw-r--r--  0 0      0           3 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/json
-rw-r--r--  0 0      0    47988736 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/
-rw-r--r--  0 0      0           3 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/json
-rw-r--r--  0 0      0        2560 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/
-rw-r--r--  0 0      0           3 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/VERSION
-rw-r--r--  0 0      0        1104 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/json
-rw-r--r--  0 0      0        4096 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/
-rw-r--r--  0 0      0           3 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/json
-rw-r--r--  0 0      0        1024 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/layer.tar
-rw-r--r--  0 0      0        1445 Jan  1  1970 manifest.json
-rw-r--r--  0 0      0         100 Jan  1  1970 repositories

-rw-r--r--  0 0      0        6031 Nov  1 21:52 1915167b30ba9aa7e01b23476a0c475624d749bd75b905778ac9fbb6e357d553.json
drwxr-xr-x  0 0      0           0 Nov  8 14:11 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/
-rw-r--r--  0 0      0           3 Nov  8 14:11 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/VERSION
-rw-r--r--  0 0      0         477 Nov  8 14:11 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/json
lrwxrwxrwx  0 0      0           0 Nov  8 14:11 213fd8ee627c1132b00e9de0b8a8693f46bad5bfb8dae9f7049b4d43a4c49f29/layer.tar -> ../ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/
-rw-r--r--  0 0      0           3 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/json
-rw-r--r--  0 0      0        3072 Nov  1 21:52 37954990fddfb33269d34a9fe7a255ff29ce37f326aef2b47035a0c9647eeee5/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/
-rw-r--r--  0 0      0           3 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/json
-rw-r--r--  0 0      0     8160768 Nov  1 21:52 47c3f7566666201623cf5ede7a5ab56ed863a2770a1a0b32407c9df20fede274/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/
-rw-r--r--  0 0      0           3 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/json
-rw-r--r--  0 0      0    47606272 Nov  1 21:52 4a7780ee5ac6d045d42c4a42f02439f8c805931e1d5b9165ae569219243a34bc/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/
-rw-r--r--  0 0      0           3 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/json
-rw-r--r--  0 0      0        4096 Nov  1 21:52 64cf86b876803bedeb50db154207ed43c9283d6cae3ea7860536a0d074a63762/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/
-rw-r--r--  0 0      0           3 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/json
-rw-r--r--  0 0      0    45671424 Nov  1 21:52 6aadf4afa754ff9fc9a77786145cf7e340b9b219557ce89c8a68d93a90cc8739/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/
-rw-r--r--  0 0      0           3 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/json
-rw-r--r--  0 0      0        2560 Nov  1 21:52 79fa40599648d63b77eb1d0867b53e2fbcb035d8a061d6d0cdd2420e7b220354/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/
-rw-r--r--  0 0      0           3 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/json
-rw-r--r--  0 0      0        3072 Nov  1 21:52 837884290a035234e47ea6e19723be588d2a9e3b8fb1b4f63ffbc322ba5b9ac8/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/
-rw-r--r--  0 0      0           3 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/json
-rw-r--r--  0 0      0   302291456 Nov  1 21:52 91a57880e391a68cb2e9521c79261d36e9229106c4f9735785882094c70921ad/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/
-rw-r--r--  0 0      0           3 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/json
-rw-r--r--  0 0      0   129050112 Nov  1 21:52 923260e6308deb31e7ca9c784956d27e166a730084741bd6fb6f97740c6a0041/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/
-rw-r--r--  0 0      0           3 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/json
-rw-r--r--  0 0      0        1536 Nov  1 21:52 9470735c46999885e0bed96f3510a2903cf1c5210dca683dadc616e1dce3a335/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/
-rw-r--r--  0 0      0           3 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/VERSION
-rw-r--r--  0 0      0         401 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/json
-rw-r--r--  0 0      0    80347136 Nov  1 21:52 9c78f74ad967b8929d1515b5f4ded20539f46fd7147fc56e9d15470427a5fa54/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/
-rw-r--r--  0 0      0           3 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/json
-rw-r--r--  0 0      0   155566592 Nov  1 21:52 a77b9e74c7525ed9b3bca7307899993a4bcb89fce49798075e0e13566ec4524a/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/
-rw-r--r--  0 0      0           3 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/json
-rw-r--r--  0 0      0    47988736 Nov  1 21:52 ae358aa7802219d5e5804e84cb8623eb3f284f67968a9e2701dc931291a77303/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/
-rw-r--r--  0 0      0           3 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/json
-rw-r--r--  0 0      0        2560 Nov  1 21:52 f39ca60682e8f395229e57bcd71ec905f01eb0ffbceabc69bba430d7297ad6fc/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/
-rw-r--r--  0 0      0           3 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/VERSION
-rw-r--r--  0 0      0        1104 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/json
-rw-r--r--  0 0      0        4096 Nov  1 21:52 f66a412446644502afb098c24cbc935d497294f22dfd5e4e7ee945b1f1220731/layer.tar
drwxr-xr-x  0 0      0           0 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/
-rw-r--r--  0 0      0           3 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/VERSION
-rw-r--r--  0 0      0         477 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/json
-rw-r--r--  0 0      0        1024 Nov  1 21:52 ff57a9ce4ed989ae6eeb661783f748b1abd205e08aafb3e2c4c9f4012cd89b37/layer.tar
-rw-r--r--  0 0      0        1445 Jan  1  1970 manifest.json
-rw-r--r--  0 0      0         100 Jan  1  1970 repositories

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/images kind/enhancement Enhancements are not bugs or new features but can improve usability or performance.
Projects
None yet
Development

No branches or pull requests

7 participants