HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
phusion
baseimage-docker
Shell2013–2022
phusion / baseimage-docker

baseimage-docker

A minimal Ubuntu base image modified for Docker-friendliness

18Distinct people
26Mentions
0Explicit recommenders
9.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A minimal Ubuntu base image modified for Docker-friendliness

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 2:04:58 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year26 dated mentions

Observed mentions: 2013-12-11 19:10:27 UTC to 2022-07-18 09:42:32 UTC.

02468102013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 6 mentions; 2 submissions, 4 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2022

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC1019
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC624
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC303
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC211

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
A minimal Ubuntu base image modified for Docker-friendliness Baseimage-docker only consumes 8.3 MB RAM and is much more powerful than Busybox or Alpine. See why below. Baseimage-docker is a special Docker image that is configured for correct use within Docker containers. It is Ubuntu, plus: Modifications for Docker-friendliness. Administration tools that are especially useful in the context of Docker. Mechanisms for easily running multiple processes, without violating the Docker philosophy. You can use it as a base for your own Docker images. Baseimage-docker is available for pulling from the Docker registry and GHCR (GitHub Container Registry)! What are the problems with the stock Ubuntu base image? Ubuntu is not designed to be run inside Docker. Its init system, Upstart, assumes that it's running on either real hardware or virtualized hardware, but not inside a Docker container. But inside a container you don't want a full system; you want a minimal system. Configuring that minimal system for use within a container has many strange corner cases that are hard to get right if you are not intimately familiar with the Unix system model. This can cause a lot of strange problems. Baseimage-docker gets everything right. The "Contents" section describes all the things that it modifies. Why use baseimage-docker? You can configure the stock ubuntu image yourself from your Dockerfile, so why bother using baseimage-docker? Configuring the base system for Docker-friendliness is no easy task. As stated before, there are many corner cases. By the time that you've gotten all that right, you've reinvented baseimage-docker. Using baseimage-docker will save you from this effort. It reduces the time needed to write a correct Dockerfile. You won't have to worry about the base system and you can focus on the stack and the app. It reduces the time needed to run docker build, allowing you to iterate your Dockerfile more quickly. It reduces download time during redeploys. Docker only needs to download the base image once: during the first deploy. On every subsequent deploys, only the changes you make on top of the base image are downloaded. Related resources: Website | Github | Docker registry | Discussion forum | Twitter | Blog Table of contents What's inside the image? Overview Wait, I thought Docker is about running a single process in a container? Does Baseimage-docker advocate "fat containers" or "treating containers as VMs"? Inspecting baseimage-docker Using baseimage-docker as base image Getting started Adding additional daemons Running scripts during container startup Environment variables Centrally defining your own environment variables Environment variable dumps Modifying environment variables Security System logging Upgrading the operating system inside the container Container administration Running a one-shot command in a new container Running a command in an existing, running container Login to the container via docker exec Usage Login to the container via SSH Enabling SSH About SSH keys Using the insecure key for one container only Enabling the insecure key permanently Using your own key The docker-ssh tool Building the image yourself Removing optional services Ubuntu 26.04 LTS: Rust Coreutils Conclusion What's inside the image? Overview Looking for a more complete base image, one that is ideal for Ruby, Python, Node.js and Meteor web apps? Take a look at passenger-docker. Component Why is it included? / Remarks Ubuntu 26.04 LTS (Resolute) or 24.04 LTS (Noble) The base system. Ubuntu 26.04 "Resolute" is the latest LTS; 24.04 "Noble" and 22.04 "Jammy" tracks are also maintained. Note: Ubuntu 26.04 ships Rust Coreutils (uutils coreutils) instead of GNU Coreutils. See the dedicated section for details and alternatives. A correct init process Main article: Docker and the PID 1 zombie reaping problem. According to the Unix process model, the init process -- PID 1 -- inherits all orphaned child processes and must reap them. Most Docker containers do not have an init process that does this correctly. As a result, their containers become filled with zombie processes over time. Furthermore, docker stop sends SIGTERM to the init process, which stops all services. Unfortunately most init systems don't do this correctly within Docker since they're built for hardware shutdowns instead. This causes processes to be hard killed with SIGKILL, which doesn't give them a chance to correctly deinitialize things. This can cause file corruption. Baseimage-docker comes with an init process /sbin/my_init that performs both of these tasks correctly. Fixes APT incompatibilities with Docker See moby/moby#1024. syslog-ng A syslog daemon is necessary so that many services - including the kernel itself - can correctly log to /var/log/syslog. If no syslog daemon is running, a lot of important messages are silently swallowed. Only listens locally. All syslog messages are forwarded to "docker logs". Why syslog-ng? I've had bad experience with rsyslog. I regularly run into bugs with rsyslog, and once in a while it takes my log host down by entering a 100% CPU loop in which it can't do anything. Syslog-ng seems to be much more stable. logrotate Rotates and compresses logs on a regular basis. SSH server Allows you to easily login to your container to inspect or administer things. SSH is disabled by default and is only one of the methods provided by baseimage-docker for this purpose. The other method is through docker exec. SSH is also provided as an alternative because docker exec comes with several caveats. Password and challenge-response authentication are disabled by default. Only key authentication is allowed. cron The cron daemon must be running for cron jobs to work. runit Replaces Ubuntu's Upstart. Used for service supervision and management. Much easier to use than SysV init and supports restarting daemons when they crash. Much easier to use and more lightwe
Read the full README on GitHub

What Hacker News says

26 sources
I miss Systemd inside Docker containers so much. IMO, for an app, "one-process per container" is a huge pain and very messy. I have a massively popular software to back up that claim: https://github.com/discourse/discourse_docker I use phusion/baseimage-docker[1] right now, love every bit of it. Having the database, web server(nginx) and the java backend all in one place works beautifully. The only pain point is having to write `runit` scripts for startup and shutdown for each service, hence the wish for Systemd inside containers. 1: https://github.com/phusion/baseimage-docker
In Systemd, 10 years later (2020)
"Docker in a Day" ...not likely. Reminds me of this blog post https://norvig.com/21-days.html Used to run all my dev stuff (Apache, MySQL, Elastic, etc) in Ubuntu with VMWare. Then downgraded to a laptop with 8GB RAM so decided to look into Docker. I found this repos very helpful https://github.com/phusion/baseimage-docker I also use some bash scripts to setup local equivalents of the AWS (services I use) in Docker containers https://github.com/mozey/aws-local So far this setup works really well for me. Tip, using the :cached configuration with mounted volumes makes a huge difference to CPU usage on the host https://docs.docker.com/docker-for-mac/osxfs-caching/
In [dead]
Stick with docker if possible, you will get more performance among other benefits. Check excellent Phusion's base image [0] if you need (pardon me) "container like VM". For the gui: Docker has native Kitematic app [1], but not sure about state on linux. I would recommend you to check Shipyard project [2] as Docker Gui Docker also support containerized X11 desktop apps [3]. [0] https://github.com/phusion/baseimage-docker [1] https://kitematic.com/ [2] http://shipyard-project.com/walkthrough/ [3] http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-d...
In Ask HN: Is there an container based alternative to virtualbox/vmware player?
Size is such a tiny concern. I'm surprised people make such a big deal about it. When all of your images use the same base, it's only a one-time cost anyway. And there are FAR more important concerns: - Are the packages in your base system well maintained and updated with security fixes? - Does your base system have longevity? Will it still be maintained a few years from now? - Does it handle all of the special corner cases that Docker causes? That's why I use https://github.com/phusion/baseimage-docker
In Super small Docker image based on Alpine Linux
Someone here on HN encouraged others to check out LXD in a previous thread a week ago. I did it and was really blown away. It really did feel like I was running virtual machines from an extremely fast hypervisor. What mattered to me most was getting away from "1 process per container" mentality. Phusion realized right away that this was an unnecessary constraint and built their base image[0] to help others. With LXD you really get the best of both worlds. You can containerize your applications without having to re-write your entire stack because it also requires cron or a few other processes. Ain't nobody got time for that. 0: https://github.com/phusion/baseimage-docker
In A Quick Introduction to LXD
An interesting point that I didn't see the author bring up is the concept of how Docker images can be built in a layered fashion, and the potential for a false sense of security. For example, you start with some sort of base image -- say phusion/baseimage-docker[1] -- and proceed to layer your application on top of it. You "trust" Phusion. They do Phusion Passenger, it's a real piece of software you heard of, and it's not some random person on the internet. At some point, there's a bug, a problem, a security flaw, and you're waiting on them to fix it... nothing, nothing. Maybe they get hacked and their base image is now infected. I haven't bothered to look, but I'm guessing it would be a trivial amount of work to start the process of culling the most popular base images used by public Dockerflles, looking for the biggest trojan horse.
Read the rest
It seems like the whole model is ripe for pushing an understanding of what is actually running on a machine -- soup to nuts -- to the way side, and establishing a non-existent trust on the building blocks you're using, lulling people into a false sense of security about their containers. A lot of people already believe that they're already doing something much more secure by running containers, and arguably, they are... except for all of the places where malicious software can be added in, and the potential container breakout techniques. [1] https://github.com/phusion/baseimage-docker
In The sad state of sysadmin in the age of containers

Showing the 15 most recent of 26 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.