engine: restructure mult-service container page

Signed-off-by: David Karlsson <david.karlsson@docker.com>
This commit is contained in:
David Karlsson 2023-05-11 16:54:23 +02:00
parent 7079dc4572
commit a2d22f16e6
1 changed files with 85 additions and 79 deletions

View File

@ -10,8 +10,8 @@ title: Run multiple services in a container
---
A container's main running process is the `ENTRYPOINT` and/or `CMD` at the
end of the `Dockerfile`. It is generally recommended that you separate areas of
concern by using one service per container. That service may fork into multiple
end of the `Dockerfile`. It's best practice to separate areas of concern by
using one service per container. That service may fork into multiple
processes (for example, Apache web server starts multiple worker processes).
It's ok to have multiple processes, but to get the most benefit out of Docker,
avoid one container being responsible for multiple aspects of your overall
@ -28,10 +28,12 @@ container exits. Handling such processes this way is superior to using a
full-fledged init process such as `sysvinit`, `upstart`, or `systemd` to handle
process lifecycle within your container.
If you need to run more than one service within a container, you can accomplish
If you need to run more than one service within a container, you can achieve
this in a few different ways.
- Put all of your commands in a wrapper script, complete with testing and
## Use a wrapper script
Put all of your commands in a wrapper script, complete with testing and
debugging information. Run the wrapper script as your `CMD`. This is a very
naive example. First, the wrapper script:
@ -62,7 +64,9 @@ this in a few different ways.
CMD ./my_wrapper_script.sh
```
- If you have one main process that needs to start first and stay running but
## Use Bash job controls
If you have one main process that needs to start first and stay running but
you temporarily need to run some other processes (perhaps to interact with
the main process) then you can use bash's job control to facilitate that.
First, the wrapper script:
@ -97,7 +101,9 @@ this in a few different ways.
CMD ./my_wrapper_script.sh
```
- Use a process manager like `supervisord`. This is a moderately heavy-weight
## Use a process manager
Use a process manager like `supervisord`. This is a moderately heavy-weight
approach that requires you to package `supervisord` and its configuration in
your image (or base your image on one that includes `supervisord`), along with
the different applications it manages. Then you start `supervisord`, which