[HN Gopher] Bocker: Docker implemented in around 100 lines of Ba...
___________________________________________________________________
Bocker: Docker implemented in around 100 lines of Bash (2015)
Author : begoon
Score : 101 points
Date : 2022-10-15 20:00 UTC (2 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| encryptluks2 wrote:
| Just because you can doesn't mean you should.
| wmf wrote:
| You shouldn't replace Docker with a shell script but you should
| understand (at some level) how Docker works. Unfortunately this
| code is pretty dense so it would probably take a while to
| untangle it.
| LaLaLand122 wrote:
| > You shouldn't replace Docker with a shell script
|
| True. You should replace it with podman!
| n4bz0r wrote:
| Woah! Don't know if it can be used as a proper Docker replacement
| (probably not), but I sure do appreciate the project as an
| example of how to use all the tools to implement an isolated
| environment. And the fact that it actually works with Docker
| containers (well, why wouldn' it, but still) is just a cheery on
| top!
| rtlfe wrote:
| > Don't know if it can be used as a proper Docker replacement
|
| The readme says "I can make no guarantees that it won't trash
| your system", so yeah clearly not intended for real use.
| stjohnswarts wrote:
| that's why smart people always check this stuff out on spare
| machines and VMs.
|
| Right?
|
| ... right?
| jen20 wrote:
| Most software says that in the license too (even commercial
| software!) so it's nice to see it front and center for once.
| puchatek wrote:
| A cheer for the cheery!
| awinter-py wrote:
| follow up blogpost 'reimplementing 100 lines of bash in 1 million
| lines of go as resume building exercise'
| DrewADesign wrote:
| Then a level 79 Unix beard reimplements it in 40 inscrutable
| lines of Perl in the shape of an ascii whale... But can't
| figure out how it works an hour later.
| awinter-py wrote:
| =for comment keep the ascii whale swimming do not
| modify this code =cut
| [deleted]
| dang wrote:
| Related:
|
| _Bocker - Docker implemented in around 100 lines of Bash (2015)_
| - https://news.ycombinator.com/item?id=22244706 - Feb 2020 (196
| comments)
|
| _Docker implemented in around 100 lines of bash_ -
| https://news.ycombinator.com/item?id=16453610 - Feb 2018 (9
| comments)
|
| _Show HN: Bocker - Docker implemented in 100 lines of bash_ -
| https://news.ycombinator.com/item?id=9925896 - July 2015 (87
| comments)
| ohiovr wrote:
| 8,800 stars!
| throwaway892238 wrote:
| Why do people care about github stars?
| ohiovr wrote:
| Because people have hobbies and wish other people are
| enjoying them. Or it does help people tell if code is helpful
| if more people are using it. Or its some guy with 8,800 throw
| away android phones.
| osrec wrote:
| The same reason why people care about likes on Facebook or
| karma on HN.
|
| Internet points mean very little, until you get enough that
| you start floating to the top of popularity rankings, at
| which point they suddenly become indirectly monetizable.
| version_five wrote:
| Stars have some value in they at least let you see that
| (the potential for funny business aside) many people have
| looked at the repo and upvoted it for whatever reason. I'm
| sure there are buggy or otherwise sketchy repos with many
| stars, and various gems with few stars (I have some :p ),
| though overall it's a signal
|
| Incidentally karma on HN is similar to the extent that it
| lets you how active a participant someone is, and that
| they're not a troll or throwaway. Again, it can certainly
| be gamed, and throwaway accounts often add valuable
| comments, but its still a signal
| moomin wrote:
| I've been contacted more than once by recruiters who've
| been attracted by stars of my profile. It's always a little
| challenging to explain to them that my profile is just my
| hobbies.
| ajross wrote:
| Really this is more interesting as a great tutorial on the way
| Linux container tools work (and especially their fundamental
| simplicity -- the docs make them seem scary when they really
| aren't) more than it is as a docker replacement (docker is
| obviously much larger than this one script, but not really
| "large" as a software stack).
|
| But reading this makes clear that, yes, containers are just
| filesystem trees, network namespaces are just like internal
| networks maintained by straightforward commands underneath an "ip
| netns" command, etc...
|
| Great stuff.
| smoldesu wrote:
| Liz Rice's presentation on re-creating Docker in Go is also quite
| eye-opening: https://www.youtube.com/watch?v=Utf-A4rODH8
| version_five wrote:
| Yes agreed, as someone who had basically no understanding of
| what docker does, this was very helpful (I'm pretty sure I saw
| it because docker used it as an introduction to itself on their
| site)
| sakras wrote:
| This is amazing! Does GitHub allow emoji names? I'd love it to be
| called ocker
| nkrisc wrote:
| Why do you need an emoji for the letter 'B'?
| teaearlgraycold wrote:
| That emoji exists because of the blood type.
|
|
| There was a meme a while back where people would use all
| over the place. Not sure why it was funny but it was.
| ghostly_s wrote:
| If you have to explain it, it's not funny. Particularly
| when the knowyourmeme page seems to indicate it's most
| prominently used by racists.
| oaththrowaway wrote:
| I see no mention of the word racist on that page. Can you
| point it out?
| stjohnswarts wrote:
| I think it was popular because of reaking ad
| nkrisc wrote:
| That's not what I'm asking. I was asking why they need an
| emoji to write "Bocker"
| teaearlgraycold wrote:
| It's a meme
| NavinF wrote:
| https://knowyourmeme.com/memes/b-button-emoji-
| chubot wrote:
| It looks like it relies on BtrFS? Can anyone add support for
| OverlayFS 2? :) which I think is more deployed these days due to
| Docker itself
|
| I'd be curious to see how it looks
| loxias wrote:
| I, too, wanted something like that and wrote it, in bash. :)
| Can confirm it's just as easy to do as you'd expect, and works
| quite well.
| chubot wrote:
| Link?
| ajross wrote:
| With overlays, you'd need some kind of registry of all the
| images in the underlying filesystem. Btrfs subvolumes give that
| to you for free, essentially. No need for deciding where to put
| them, just give them a name.
| loxias wrote:
| Or you could treat the final image for the container as the
| read only base for the overlay. That's what I do. I "flatten"
| the image from buildkit, and untar it to a directory. Then
| make an overlay mount for the container and chroot inside. :)
| ajross wrote:
| Right, but the point is a btrfs snapshot does that for you.
| No need for a "flattening" step, just make a copy-on-write
| snapshot of your layer at whatever state it exists in and
| go. Delete the original later, etc... Doesn't matter.
| jamal-kumar wrote:
| It's like 100 lines of bash, I suggest just checking out the
| source code. Very easy to understand once you know the basics
| of containerization being basically just cgroups, namespaces,
| and filesystem level isolation. I link it to people who are
| trying to learn about what containerization actually does.
| sbarre wrote:
| Just a note that this repo's latest update was in 2015
| tyingq wrote:
| It's a short bash script calling out to things like btrfs,
| cgcreate, cgexec, nsenter, etc. All of which get updates
| regularly.
| [deleted]
| quocanh wrote:
| You're telling me it's so stable and mature that it hasn't
| needed an update in 7 years? Incredible.
| andirk wrote:
| It can mean that but the world is a wicked place and that
| means no security updates either. Maybe none are needed.
| robertlagrant wrote:
| With all those prerequisites it's definitely possible. I can
| implement Docker witt one prereq in one line of Bash:
| docker "$@"
|
| You're welcome, internet.
| [deleted]
| kuschku wrote:
| Except, docker has the same prerequisites. That's kind of the
| point of this excercise, to show that docker is primarily glue
| between existing tools, not necessarily new technology.
| vbezhenar wrote:
| For me docker is three things:
|
| 1. Dockerfile concept.
|
| 2. Container image format (which is know known as OCI
| container).
|
| 3. Docker hub which is a repository of containers including
| high-quality ones.
|
| Every thing is essential and bringed innovation.
|
| Launching container is boring and not really interesting
| indeed.
___________________________________________________________________
(page generated 2022-10-15 23:00 UTC)