Pedro Pedro - 1 year ago 193
Linux Question

Automatically Start Services in Docker Container

I'm doing some initial tests with docker. At moment i have my images and I can put some containers running, with:

docker ps

I do
docker attach container_id
and start apache2 service.

Then from the main console I commit the container to the image.

After exiting the container, if I try to start the container or try to run one new container from the committed image, the service is always stopped.

How can create or restart one container with the services started, for example apache?


EDIT: I've learned a lot about Docker since originally posting this answer. "Starting services automatically in Docker containers" is not a good usage pattern for Docker. - Instead, use ____ to automatically start Docker containers wherein services run. E.G. fleet or Kubernetes, or even Monit/SystemD/Upstart/Init.d/Cron.

ORIGINAL ANSWER: If you are starting the container with the command /bin/bash, then you can accomplish this in the manner outlined here:

So, if you are starting the container with docker run -i -t IMAGE /bin/bash and if you want to automatically start apache2 when the container is started, edit /etc/bash.bashrc in the container and add /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf (or whatever your apache2 start command is) to a newline at the end of the file.

Save the changes to your image and restart it with docker run -i -t IMAGE /bin/bash and you will find apache2 running when you attach.