1
0
mirror of /repos/baseimage-docker.git synced 2025-12-30 08:01:31 +01:00

Add table of contents to README.

This commit is contained in:
Hongli Lai (Phusion) 2014-02-01 11:24:24 +01:00
parent 017c6c22d5
commit b297ae8b42

View File

@ -2,12 +2,7 @@
Baseimage-docker is a special [Docker](http://www.docker.io) image that is configured for correct use within Docker containers. It is Ubuntu, plus modifications for Docker-friendliness. You can use it as a base for your own Docker images. Baseimage-docker is a special [Docker](http://www.docker.io) image that is configured for correct use within Docker containers. It is Ubuntu, plus modifications for Docker-friendliness. You can use it as a base for your own Docker images.
Baseimage-docker is available for pulling from on [the Docker registry](https://index.docker.io/u/phusion/baseimage/)! Baseimage-docker is available for pulling from [the Docker registry](https://index.docker.io/u/phusion/baseimage/)!
* **Github**: https://github.com/phusion/baseimage-docker
* **Discussion forum**: https://groups.google.com/d/forum/passenger-docker
* **Twitter**: https://twitter.com/phusion_nl
* **Blog**: http://blog.phusion.nl/
### What are the problems with the stock Ubuntu base image? ### What are the problems with the stock Ubuntu base image?
@ -15,6 +10,7 @@ Ubuntu is not designed to be run inside docker. Its init system, Upstart, assume
Baseimage-docker gets everything right. The "Contents" section describes all the things that it modifies. Baseimage-docker gets everything right. The "Contents" section describes all the things that it modifies.
<a name="why_use"></a>
### Why use baseimage-docker? ### Why use baseimage-docker?
You can configure the stock `ubuntu` image yourself from your Dockerfile, so why bother using baseimage-docker? You can configure the stock `ubuntu` image yourself from your Dockerfile, so why bother using baseimage-docker?
@ -24,7 +20,36 @@ You can configure the stock `ubuntu` image yourself from your Dockerfile, so why
* It reduces the time needed to run `docker build`, allowing you to iterate your Dockerfile more quickly. * 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. * 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.
## Contents -----------------------------------------
**Related resources**:
[Github](https://github.com/phusion/baseimage-docker) |
[Docker registry](https://index.docker.io/u/phusion/baseimage/) |
[Discussion forum](https://groups.google.com/d/forum/passenger-docker) |
[Twitter](https://twitter.com/phusion_nl) |
[Blog](http://blog.phusion.nl/)
**Table of contents**
* [What's inside the image?](#whats_inside)
* [Overview](#whats_inside_overview)
* [Wait, I thought Docker is about running a single process in a container?](#docker_single_process)
* [Inspecting baseimage-docker](#inspecting)
* [Using baseimage-docker as base image](#using)
* [Getting started](#getting_started)
* [Adding additional daemons](#adding_additional_daemons)
* [Running scripts during container startup](#running_startup_scripts)
* [Login to the container](#login)
* [Building the image yourself](#building)
* [Conclusion](#conclusion)
-----------------------------------------
<a name="whats_inside"></a>
## What's inside the image?
<a name="whats_inside_overview"></a>
### 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](https://github.com/phusion/passenger-docker).* *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](https://github.com/phusion/passenger-docker).*
@ -41,12 +66,14 @@ You can configure the stock `ubuntu` image yourself from your Dockerfile, so why
Baseimage-docker is very lightweight: it only consumes 6 MB of memory. Baseimage-docker is very lightweight: it only consumes 6 MB of memory.
<a name="docker_single_process"></a>
### Wait, I thought Docker is about running a single process in a container? ### Wait, I thought Docker is about running a single process in a container?
Absolutely not true. Docker runs fine with multiple processes in a container. In fact, there is no technical reason why you should limit yourself to one process - it only makes things harder for you and breaks all kinds of essential system functionality, e.g. syslog. Absolutely not true. Docker runs fine with multiple processes in a container. In fact, there is no technical reason why you should limit yourself to one process - it only makes things harder for you and breaks all kinds of essential system functionality, e.g. syslog.
Baseimage-docker *encourages* multiple processes through the use of runit. Baseimage-docker *encourages* multiple processes through the use of runit.
<a name="inspecting"></a>
## Inspecting baseimage-docker ## Inspecting baseimage-docker
To look around in the image, run: To look around in the image, run:
@ -55,8 +82,12 @@ To look around in the image, run:
You don't have to download anything manually. The above command will automatically pull the baseimage-docker image from the Docker registry. You don't have to download anything manually. The above command will automatically pull the baseimage-docker image from the Docker registry.
<a name="using"></a>
## Using baseimage-docker as base image ## Using baseimage-docker as base image
<a name="getting_started"></a>
### Getting started
The image is called `phusion/baseimage`, and is available on the Docker registry. The image is called `phusion/baseimage`, and is available on the Docker registry.
By default, it allows SSH access for the key in `image/insecure_key`. This makes it easy for you to login to the container, but you should replace this key as soon as possible. By default, it allows SSH access for the key in `image/insecure_key`. This makes it easy for you to login to the container, but you should replace this key as soon as possible.
@ -86,6 +117,7 @@ By default, it allows SSH access for the key in `image/insecure_key`. This makes
# Clean up APT when done. # Clean up APT when done.
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
<a name="adding_additional_daemons"></a>
### Adding additional daemons ### Adding additional daemons
You can add additional daemons to the image by creating runit entries. You only have to write a small shell script which runs your daemon, and runit will keep it up and running for you, restarting it when it crashes, etc. You can add additional daemons to the image by creating runit entries. You only have to write a small shell script which runs your daemon, and runit will keep it up and running for you, restarting it when it crashes, etc.
@ -106,6 +138,7 @@ Here's an example showing you how to a memached server runit entry can be made.
Note that the shell script must run the daemon **without letting it daemonize/fork it**. Usually, daemons provide a command line flag or a config file option for that. Note that the shell script must run the daemon **without letting it daemonize/fork it**. Usually, daemons provide a command line flag or a config file option for that.
<a name="running_startup_scripts"></a>
### Running scripts during container startup ### Running scripts during container startup
The baseimage-docker init system, `/sbin/my_init`, runs the following scripts during startup, in the following order: The baseimage-docker init system, `/sbin/my_init`, runs the following scripts during startup, in the following order:
@ -125,6 +158,7 @@ The following example shows how you can add a startup script. This script simply
RUN mkdir -p /etc/my_init.d RUN mkdir -p /etc/my_init.d
ADD logtime.sh /etc/my_init.d/logtime.sh ADD logtime.sh /etc/my_init.d/logtime.sh
<a name="login"></a>
### Login to the container ### Login to the container
You can use SSH to login to any container that is based on baseimage-docker. You can use SSH to login to any container that is based on baseimage-docker.
@ -145,6 +179,7 @@ Now SSH into the container. In this example we're using [the default insecure ke
ssh -i insecure_key root@<IP address> ssh -i insecure_key root@<IP address>
<a name="building"></a>
## Building the image yourself ## Building the image yourself
If for whatever reason you want to build the image yourself instead of downloading it from the Docker registry, follow these instructions. If for whatever reason you want to build the image yourself instead of downloading it from the Docker registry, follow these instructions.
@ -168,6 +203,7 @@ If you want to call the resulting image something else, pass the NAME variable,
make build NAME=joe/baseimage make build NAME=joe/baseimage
<a name="conclusion"></a>
## Conclusion ## Conclusion
* Using baseimage-docker? [Tweet about us](https://twitter.com/share) or [follow us on Twitter](https://twitter.com/phusion_nl). * Using baseimage-docker? [Tweet about us](https://twitter.com/share) or [follow us on Twitter](https://twitter.com/phusion_nl).