Hacker News new | ask | show | jobs
by MyOutfitIsVague 353 days ago
A "whole Docker container" is not very heavyweight. Other than having their own filesystem view and separate shared libraries, container processes are nearly as light as non-container processes. It's not like running a VM.
2 comments

It really depends whether the parent is on Linux (where your description would be correct), or on MacOS, where running a container involves first booting up a Linux VM under the hood and having it exchange files/network traffic with the host with tons of overhead (not to mention the pile of shit Electron-based Docker Desktop app that feels like it takes as much memory as the Linux VM itself).
> Other than having their own filesystem view and separate shared libraries, container processes are nearly as light as non-container processes. It's not like running a VM.

why does the smallest script take seconds to even start then?

Below is a transcript of a "smallest script" which runs in 328 ms total on my machine. And that includes loading an ubuntu OS image, which could be optimized depending on what dependencies the script needs.

Of course, if you're invoking it on a remote cluster, there are many reasons it can talk longer, especially if the cluster has to scale to satisfy the request. But all those reasons are nothing to do with containers specifically - it's things like cluster capacity, node provisioning time, container pull time, network latency, etc. If you architect things properly, you can get the number below + network latency even for a remote cluster invocation.

    $ time docker run ubuntu echo hello world  
    hello world  

    real    0m0.328s  
    user    0m0.011s  
    sys     0m0.010s
That is not normal. Small scripts should launch in milliseconds, not several seconds.