-
Notifications
You must be signed in to change notification settings - Fork 18.6k
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
Comments
It is deterministic on my MacBook.
|
@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. |
Interesting findings. This dockerfile should reproduce it on all kind of base images after adding enough
And 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. |
Agreed, But image/tarexport/save.go already goes to great lengths to ensure the tar content is deterministic by setting file timestamps for each layer, |
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. |
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 |
@thaJeztah it is a sad thing that syscall package is frozen... the effect of utimensat on a symbol link is not even documented.... |
Apparently they already rejected a proposal to add a portable solution in golang/go#30487. They have a |
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?
|
if the image has symlink to another layer when ~ 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 |
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:
docker build -t test .
docker save
is differentDescribe 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 duplicatelayer.tar
but the symlink's Created/Modified timestamps are not set to deterministic values causing the tarfiles hash value to change on each call todocker save
. Here layerc5015432a916547932b5054209ddc8042b0fcd6de6f84e69f6672576e71dde86
is causing the tarfiles's hash to change.Output of
docker version
:Output of
docker info
:The text was updated successfully, but these errors were encountered: