We Don’t Use Docker (We Don’t Need It)

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • s6-overlay

    s6 overlay for containers (includes execline, s6-linux-utils & a custom init)

  • "Docker is easy from a basic usage standpoint like most tutorials are"

    This applies to basically any software or tooling once you get away from the initial tutorials. They wouldn't be tutorials if they covered all sorts of specific use cases particular to your own situation.

    "The hard part is when you start configuring and configuring to your own requirements. What baseimage should you use? How about logging?"

    Either the same distro you would use on a bespoke server, or you can optimize with alpine or scratch. Logging can be as simple or complicated as you want it to be, regardless if you use docker or not.

    "How about PID 1 problem?"

    We use s6-overlay [0] to manage this. When a service dies, a script gets executed, giving us control over how to handle it.

    [0]: https://github.com/just-containers/s6-overlay#features

    "How about SSH?"

    For us, we use ansible to provision/set up kubernetes with ssh keys, then access pods and containers through kubernetes' cli. It isn't particularly -nice-, but it does work.

    "How about restarting servers? How about migrations? One-off scripts?"

    This is managed through kubernetes. You can restart servers and make deployments.

  • microprocessor-trend-data

    Data repository for my blog series on microprocessor trend data.

  • Hard to say it's still "exponential"...what do you think the current constant doubling period is now?

    Here's the single thread raw data from that repo. If you take into account clock speed increase (which, as you agree, have plateaued) we're looking at maybe a 2x increase in instructions per clock for conventional int (not vectorized) workloads.

    Is there even another 2x IPC increase possible? At any time scale?

    https://github.com/karlrupp/microprocessor-trend-data/blob/m...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • fleet

  • What you describe is essentially the original CoreOS fleet[0] project. It's distributed systemd init files.

    [0] https://github.com/coreos/fleet#fleet---a-distributed-init-s...

    I find it ironic half of k8s mojo, etcd, came out of this project as well.

  • nomad-driver-nspawn

    A Nomad task driver for systemd-nspawn

  • > Now imagine if only you could schedule to run systemd units using Nomad

    With some tweaks to your unit files this is actually possible. Nomad has the concept of custom task drivers you can implement to make it schedule any kind of workload you like. I am maintaining a task driver which allows you to run systemd-nspawn containers with Nomad [1].

    Using this task driver you can deploy your systemd units running inside a systemd-nspawn container into a Nomad cluster. If this sounds interesting to you I have written a how-to blog-post about this [2]

    [1]: https://github.com/JanMa/nomad-driver-nspawn

  • bocker

    Docker implemented in around 100 lines of bash

  • parsemail

    Hanami fork of https://github.com/DusanKasan/parsemail

  • I agree with the author post. I'm an early Docker user in 2013 and use it heavily everywhere I can. However, I see the author point. Pretty much what we can achieve with docker can be achieve with systemd.

    Something is also really hard with docker is mail server. I run an email forwarding service [0] and use Postfix. Postfix requires opendkim, rspamd, opendmarc etc...now once I puts them into a container suddenly I have to have a supervisor to manage them, if I run them separately then I have a put myself to hell to manage the graph mess.

    I think any services that has a few own sub dependencies shoulnd't use Docker at all.

    Docker works great for stuff where you have a run time(think Ruby, python, node etc). It makes upgrading and vendor that run time easily. You can mix and matched version. Say Ruby, it's doable with rbenv/rvm on the host but quite complex to mess around with path.

    ---

    [0] https://hanami.run

  • caxa

    Discontinued 📦 Package Node.js applications into executable binaries 📦

  • I too love how simple the infrastructure can get using Go’s tools. At the same time, I prefer Node.js for the libraries & bigger community. So I developed a tool called caxa which brings the best of both worlds, packaging any Node.js into a single binary. Check it out at https://github.com/leafac/caxa

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • litestream

    Streaming replication for SQLite.

  • I’m not the OP but I’m the author of an open source tool called Litestream[1] that does streaming replication of SQLite databases to AWS S3. I’ve found it to be a good, cheap way of keeping your data safe.

    [1]: https://litestream.io/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts