3 ms·
I've been able to achieve that same end goal, having deterministic/reproducible/reverting/history/etc with Ubuntu. Essentially, I boot Docker images on bare met
by pknopf 6y ago
I've been able to achieve that same end goal, having deterministic/reproducible/reverting/history/etc with Ubuntu. Essentially, I boot Docker images on bare metal.
https://godarch.com/ https://godarch.com/
My recipes: https://github.com/pauldotknopf/darch-recipes https://github.com/pauldotknopf/darch-recipes
I have the same exact images, bit-for-bit, running on 3 different machines. I have a zshrc alias that allows me to sync my current machine with my work image that I have stored on Docker Hub.
- the_duke 6y agoI recently stumbled on Darch, but decided not to try it because the repo seems pretty dead. (last commit Feb 2019) Is this a non-issue?
- pknopf 6y agoI use it daily. I'm open to any ideas/improvements people want to make, but it's <air-quote> done </air-quote> in my eyes.
- the_duke 6y agoGood to know, I'll give it another look.
- pknopf 6y agoHeads up though, I will probably be deprecating the "recipes" format for 1.0, opting to use a pure Dockerfile approach. See my recipes repo for an example.
- nvrspyx 6y agoIt's "done" in your eyes, but you're still working towards a 1.0 release? It might just be me, but this is a bit confusing.
- pknopf 6y agoYou must have been really confused when React moved to 16.X ;) My scenario is similar. The current version is 100%. However, I'm going to be refactoring a bit, moving some pieces around, to support some new features. The only breaking changes that user's will notice is that ```darch recipes build``` will be moving to ```docker build .```. I've already converted my personal recipes to use it.
- raphinou 6y agoA lot of potential users will probably react similarly and think the project is not maintained anymore. Maybe you could clarify that by mentioning in the README that this project is basically done, but still maintained should a problem arise.
- danieldk 6y agohaving deterministic/reproducible/reverting/history/etc with Ubuntu Looking at the recipes this seems to be non-deterministic/reproducible. E.g. add-apt-repository -y ppa:longsleep/golang-backports && apt-get update From: https://github.com/pauldotknopf/darch-recipes/blob/502fb3d66c61fccd80a6079d0613dfe9385470b7/recipes/development/script#L6 https://github.com/pauldotknopf/darch-recipes/blob/502fb3d66... There is no guarantee that you will get exactly the same Go version when rebuilding an image. And all the scripts seem like that: ad-hoc wget and apt command, where package versions, how they are built, etc. can change between runs. This is only a very weak notion of reproducibility: if the scripts run, you will get an image with the same packages. Nix/Guix guarantee that you get exactly the same versions, built in exactly the same way, from your own package down to transitive dependencies such as glibc or zlib. (I am not criticizing the project, it may be great, but it is just not reproducible/deterministic.)
- pknopf 6y agoSure, it's not bit-for-bit like Nix and friends, but it's as predictable as you'd expect "docker pull ubuntu:bionic" to be, which is perfectly reasonable/comfortable for desktop scenarios.
- takeda 6y agoIt's as reproducible as a bash script that you call on first boot to configure your machine.
- pknopf 6y agoYeah, and? Darch does a lot more than just that. 1. Temporary boots. You can "sudo rm -rf /", reboot, and all is well. You can play around with "apt-get install" without having to commit to your changes being persistent. 2. Checkpoints. Each "bash script that you call on first boot" is versioned and you can easily revert back to any image at any point, as simple as running either "docker run ubuntu:bionic" or "docker run ubuntu:focal". 3. Store your builds in Docker Hub (https://hub.docker.com/repository/docker/pauldotknopf/darch-ubuntu-development https://hub.docker.com/repository/docker/pauldotknopf/darch-...) so that the same resulting image can be run on any of your machines via "darch images pull your-image && darch stage upload your-image". Your bash-script approach to building a fresh machine would be a lot more involved than: 1. Make changes to your script. 2. Check in a push to repo. 3. Wait for CI build to push to Docker Hub. 4. "darch images pull my-new-image && darch stage upload my-new-image" 5. Reboot. 6. Enjoy.