Hacker News

maxloh
Arch Linux Now Has a Bit-for-Bit Reproducible Docker Image antiz.fr

dev_l1x_be4 hours ago

All docker containers should have been like that. apt-get update in a docker build step is an anti pattern.

bluGill21 minutes ago

You are screwed either way. If you don't update your container has a ton of known security issues, if you do the container is not reproducable. reproducable is neat with some useful security benefits, but it is something a non goal if the container is more than a month old - day might even be a better max age.

dev_l1x_be11 minutes ago

I update my docker containers regularly but doing it in a reproducible, auditable, predictable way

bandrami21 minutes ago

This has been a solved problem for over two decades now with Nix but people can't be asked

dev_l1x_be10 minutes ago

It has been solved even without Nix for a long time, just laziness is probably why we are not doing it

DuncanCoffee3 hours ago

I know it's an anti-pattern, but what is the alternative if you need to install some software? Pulling its tagged source code, gcc and compile everything?

Filligree5 minutes ago

Run “nix flake update”. Commit the lockfile. Build a docker image from that; the software you need is almost certainly there, and there’s a handy docker helper.

kandrosan hour ago

Copying from another image is an under appreciated feature

FROM ubuntu:24.04

COPY --from=ghcr.io/owner/image:latest /usr/local/bin/somebinary /usr/local/bin/somebinary

CMD ["somebinary"]

Not as simple when you need shared dependencies

bennofs2 hours ago

Both Debian and Ubuntu provide snapshot mirrors where you can specify a date to get the package lists as they looked at that time.

bluGill20 minutes ago

Which is only useful for historical invesigation - the old snapshot has security holes attackers know how to exploit.

dev_l1x_be9 minutes ago

base image

software component image

both should be version pinned for auditing

liveoneggs19 minutes ago

pretend you don't do it and add your extra software to the layer above

rowanG0773 hours ago

With a binary cache that is not so bad, see for example what nix does.

Pay083 hours ago

I don't really see how that's different from a normal binary install of a reproducible package. Especially with the lacking quality of a lot of Nix packages.

bandrami22 minutes ago

If you're in a situation where you want reproducibility you're using nix to build your own packages anyways, not relying on their packages

rowanG0772 hours ago

It's not if you can pin the package. It gives you reproducable docker containers without having to rebuild the world. Wasn't that the entire question?

malikolivier3 hours ago

This is to solve such issues that I am using and running StableBuild.

It is a managed service that keeps a cached copy of your dependencies at a specific time. You can pin your dependencies within a Dockerfile and have reproducible docker images.

schonfinkel2 hours ago

I don't wanna be that guy but...

NIX FIXES THIS.

dijit2 hours ago

So does Bazel. :p

kippinsula4 hours ago

reproducible images are one of those features where the payoff is mostly emotional until the day it isn't. we had an incident where two supposedly identical images on two machines had a three byte delta in a timestamp and it cost us an afternoon to bisect from the wrong end. boring win, but a real one.

loloquwowndueoan hour ago

How did a differing timestamp cause an incident in the first place? Curious.

bluGill20 minutes ago

My guess is it was the only obvious evidence of an attack.

azangru2 hours ago

A totally unrelated comment; but — there is an animation on that page that moves practically everything on the page about 20 pixels down over the course of 1 second.

I thought that would completely trash the Cumulative Layout Shift core web vital. Because, hey! the layout is shifting in front of my very eyes. But no, the CLS on the page is 0.

Is CLS a misleading metric then?

chrisweekly19 minutes ago

It's happening as a result of a deliberate animation. The CLS metric relates to initial render. So yes, there is layout shift, but it's not CLS per se.

epolanski35 minutes ago

The layout isn't shifting, so it's not a layout shift.

And it's not unexpected, because it comes from a css transition.

azangru14 minutes ago

Sure.

It's just that the spirit of Google's core web vitals has been to measure the properties of a web page that have the most impact on users. How quickly content appears on a page, how visually stable the content is, and how long it takes the page to respond to an interaction.

In the case of this page, I don't think it can be considered visually stable at all in the first second after it's loaded.

And yet, core web vitals cannot demonstrate this.

aa-jv4 hours ago

This is a really interesting accomplishment - I am also working heavily on reproducible builds for my firmware projects, and .. lo and behold .. the package manager key administrivia is the final bone to be broken.

I wonder if Arch leading the way on this will prompt other distro's to attempt the same feat. Reproducible builds are important for certification, security and safety-critical applications .. it'd be great to see Linux distros become more conformant to this method.

Pay083 hours ago

Debian already has an ongoing project for this: https://wiki.debian.org/ReproducibleBuilds.

fragmede3 hours ago

and they said compilers are deterministic...

This is a huge accomplishment! But it wouldn't be so huge if compilers were trivially deterministic. It took 5 decades of development for compilers to get here. I'm sure ChatGPT in 2073 is going to be more deterministic than it was in 2023.

hn-front (c) 2024 voximity
source