diff --git a/Changelog.md b/Changelog.md index e410bf6..8f9262f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -8,6 +8,8 @@ * Fixed an incorrectly printed message. * The baseimage-docker image no longer EXPOSEs any ports by default. The EXPOSE entries were originally there to enable some default guest-to-host port forwarding entries, but in recent Docker versions they changed the meaning of EXPOSE, and now EXPOSE is used for linking containers. As such, we no longer have a reason to EXPOSE any ports by default. Fixes GH-15. * Fixed syslog-ng not being able to start because of a missing afsql module. Fixes the issue described in [pull request 7](https://github.com/phusion/baseimage-docker/pull/7). + * Removed some default Ubuntu cron jobs which are not useful in Docker containers. + * Added the logrotate service. Fixes GH-22. ## 0.9.6 (release date: 2014-02-17) diff --git a/README.md b/README.md index a1f9aba..0b4053c 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ You can configure the stock `ubuntu` image yourself from your Dockerfile, so why | A **correct** init process | According to the Unix process model, [the init process](https://en.wikipedia.org/wiki/Init) -- PID 1 -- inherits all [orphaned child processes](https://en.wikipedia.org/wiki/Orphan_process) and must [reap them](https://en.wikipedia.org/wiki/Wait_(system_call)). Most Docker containers do not have an init process that does this correctly, and as a result their containers become filled with [zombie processes](https://en.wikipedia.org/wiki/Zombie_process) over time.

Furthermore, `docker stop` sends SIGTERM to the init process, which is then supposed to stop 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 https://github.com/dotcloud/docker/issues/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. | +| logrotate | Rotates and compresses logs on a regular basis. | | ssh server | Allows you to easily login to your container to inspect or administer things.

Password and challenge-response authentication are disabled by default. Only key authentication is allowed.

SSH access can be easily disabled if you so wish. Read on for instructions. | | cron | The cron daemon must be running for cron jobs to work. | | [runit](http://smarden.org/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 lightweight than Upstart. | diff --git a/image/system_services.sh b/image/system_services.sh index f223204..f2b28ff 100755 --- a/image/system_services.sh +++ b/image/system_services.sh @@ -17,6 +17,9 @@ cp /build/runit/syslog-ng /etc/service/syslog-ng/run mkdir -p /var/lib/syslog-ng cp /build/config/syslog_ng_default /etc/default/syslog-ng +## Install logrotate. +$minimal_apt_get_install logrotate + ## Install the SSH server. $minimal_apt_get_install openssh-server mkdir /var/run/sshd