Docker Tip #42: Using Docker for Long Running and One off Tasks
Docker is great at isolating processes, and they can either be long running processes (like a web server), or tasks that exit quickly.
A good example of a one off task that exits would be the official Docker “Hello World” image.
You can try it out by running
docker container run hello-world. After a few seconds you’ll be greeted with a hello world message, but then the container / process stops.
It doesn’t run in an infinite loop until you manually kill it. Another good example of this would be a database backup script. That will run for X amount of time and then likely exit on its own when it finishes.
On the other hand, a long running process would be expected to live forever until it either crashes, or you manually kill it.
A text book example of that would be a web server, such as nginx. You can try that out by running
docker container run -p 80:80 nginx:alpine. You’ll notice that the container does not exit on its own. It just waits to do work (in this case, serve web requests).
You could say that’s a long running process and we even published port 80 so you can check out
http://localhost in your browser. It will log your request back to the terminal.
If you want nginx to stop, you would have to terminate it yourself, which you can do by pressing
CTRL+C or stopping the container from a different terminal using
docker stop <container id>.
Docker is a champion at running both types of tasks and you should use both when needed.