docs: use more tables in run reference and minor fixups

This adds two more tables to the run reference documentation.

- the list of 'modes' for Network settings is now a table.
- the "note" for `--net="host"` was moved from the list to the detailed
  description.
- the 'options' for "Runtime constraints on CPU and memory" are
  now a table
- slightly re-worded the description for "memory" options, e.g.
  "It is not allowed..." was rewriten to "The *container* is not allowed..."
- fix example in "Runtime privilege, Linux capabilities, and LXC configuration"
  being indented twice
- slightly reduced indenting in some `usage` output to be better readable.
- fixes a typo `/ets/hosts` -> `/etc/hosts`

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2015-03-08 17:42:14 +01:00 committed by Tibor Vass
parent 18fea6ea4a
commit 3359add082
1 changed files with 114 additions and 39 deletions

View File

@ -2,6 +2,12 @@ page_title: Docker run reference
page_description: Configure containers at runtime page_description: Configure containers at runtime
page_keywords: docker, run, configure, runtime page_keywords: docker, run, configure, runtime
<!-- TODO (@thaJeztah) define more flexible table/td classes -->
<style>
.content-body table .no-wrap {
white-space: nowrap;
}
</style>
# Docker run reference # Docker run reference
**Docker runs processes in isolated containers**. When an operator **Docker runs processes in isolated containers**. When an operator
@ -50,9 +56,9 @@ following options.
- [Container Identification](#container-identification) - [Container Identification](#container-identification)
- [Name (--name)](#name-name) - [Name (--name)](#name-name)
- [PID Equivalent](#pid-equivalent) - [PID Equivalent](#pid-equivalent)
- [IPC Settings](#ipc-settings) - [IPC Settings (--ipc)](#ipc-settings-ipc)
- [Network Settings](#network-settings) - [Network Settings](#network-settings)
- [Restart Policies<br />(--restart)](#restart-policies-restart) - [Restart Policies (--restart)](#restart-policies-restart)
- [Clean Up (--rm)](#clean-up-rm) - [Clean Up (--rm)](#clean-up-rm)
- [Runtime Constraints on CPU and Memory](#runtime-constraints-on-cpu-and-memory) - [Runtime Constraints on CPU and Memory](#runtime-constraints-on-cpu-and-memory)
- [Runtime Privilege, Linux Capabilities, and LXC Configuration](#runtime-privilege-linux-capabilities-and-lxc-configuration) - [Runtime Privilege, Linux Capabilities, and LXC Configuration](#runtime-privilege-linux-capabilities-and-lxc-configuration)
@ -134,9 +140,10 @@ While not strictly a means of identifying a container, you can specify a version
image you'd like to run the container with by adding `image[:tag]` to the command. For image you'd like to run the container with by adding `image[:tag]` to the command. For
example, `docker run ubuntu:14.04`. example, `docker run ubuntu:14.04`.
## PID Settings ## PID Settings (--pid)
--pid="" : Set the PID (Process) Namespace mode for the container, --pid="" : Set the PID (Process) Namespace mode for the container,
'host': use the host's PID namespace inside the container 'host': use the host's PID namespace inside the container
By default, all containers have the PID namespace enabled. By default, all containers have the PID namespace enabled.
PID namespace provides separation of processes. The PID Namespace removes the PID namespace provides separation of processes. The PID Namespace removes the
@ -154,13 +161,16 @@ within the container.
This command would allow you to use `strace` inside the container on pid 1234 on This command would allow you to use `strace` inside the container on pid 1234 on
the host. the host.
## IPC Settings ## IPC Settings (--ipc)
--ipc="" : Set the IPC mode for the container, --ipc="" : Set the IPC mode for the container,
'container:<name|id>': reuses another container's IPC namespace 'container:<name|id>': reuses another container's IPC namespace
'host': use the host's IPC namespace inside the container 'host': use the host's IPC namespace inside the container
By default, all containers have the IPC namespace enabled. By default, all containers have the IPC namespace enabled.
IPC (POSIX/SysV IPC) namespace provides separation of named shared memory segments, semaphores and message queues. IPC (POSIX/SysV IPC) namespace provides separation of named shared memory
segments, semaphores and message queues.
Shared memory segments are used to accelerate inter-process communication at Shared memory segments are used to accelerate inter-process communication at
memory speed, rather than through pipes or through the network stack. Shared memory speed, rather than through pipes or through the network stack. Shared
@ -196,10 +206,41 @@ explicitly by providing a MAC via the `--mac-address` parameter (format:
Supported networking modes are: Supported networking modes are:
* none - no networking in the container <table>
* bridge - (default) connect the container to the bridge via veth interfaces <thead>
* host - use the host's network stack inside the container. Note: This gives the container full access to local system services such as D-bus and is therefore considered insecure. <tr>
* container - use another container's network stack <th class="no-wrap">Mode</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="no-wrap"><strong>none</strong></td>
<td>
No networking in the container.
</td>
</tr>
<tr>
<td class="no-wrap"><strong>bridge</strong> (default)</td>
<td>
Connect the container to the bridge via veth interfaces.
</td>
</tr>
<tr>
<td class="no-wrap"><strong>host</strong></td>
<td>
Use the host's network stack inside the container.
</td>
</tr>
<tr>
<td class="no-wrap"><strong>container</strong>:&lt;name|id&gt;</td>
<td>
Use the network stack of another container, specified via
its *name* or *id*.
</td>
</tr>
</tbody>
</table>
#### Mode: none #### Mode: none
@ -227,6 +268,9 @@ container. The container's hostname will match the hostname on the host
system. Publishing ports and linking to other containers will not work system. Publishing ports and linking to other containers will not work
when sharing the host's network stack. when sharing the host's network stack.
> **Note**: `--net="host"` gives the container full access to local system
> services such as D-bus and is therefore considered insecure.
#### Mode: container #### Mode: container
With the networking mode set to `container` a container will share the With the networking mode set to `container` a container will share the
@ -410,20 +454,52 @@ container:
### Memory constraints ### Memory constraints
We have four ways to set memory usage: We have four ways to set memory usage:
- memory=inf, memory-swap=inf (not specify any of them)
There is no memory limit, you can use as much as you want.
- memory=L&lt;inf, memory-swap=inf (specify memory and set memory-swap as `-1`) <table>
It is not allowed to use more than L bytes of memory, but use as much swap <thead>
as you want (only if the host supports swap memory). <tr>
<th>Option</th>
- memory=L&lt;inf, memory-swap=2*L (specify memory without memory-swap) <th>Result</th>
It is not allowed to use more than L bytes of memory, swap *plus* memory </tr>
usage is double of that. </thead>
<tbody>
- memory=L&lt;inf, memory-swap=S&lt;inf, L&lt;=S (specify both memory and memory-swap) <tr>
It is not allowed to use more than L bytes of memory, swap *plus* memory <td class="no-wrap">
usage is limited by S. <strong>memory=inf, memory-swap=inf</strong> (default)
</td>
<td>
There is no memory limit for the container. The container can use
as much memory as needed.
</td>
</tr>
<tr>
<td class="no-wrap"><strong>memory=L&lt;inf, memory-swap=inf</strong></td>
<td>
(specify memory and set memory-swap as <code>-1</code>) The container is
not allowed to use more than L bytes of memory, but can use as much swap
as is needed (if the host supports swap memory).
</td>
</tr>
<tr>
<td class="no-wrap"><strong>memory=L&lt;inf, memory-swap=2*L</strong></td>
<td>
(specify memory without memory-swap) The container is not allowed to
use more than L bytes of memory, swap *plus* memory usage is double
of that.
</td>
</tr>
<tr>
<td class="no-wrap">
<strong>memory=L&lt;inf, memory-swap=S&lt;inf, L&lt;=S</strong>
</td>
<td>
(specify both memory and memory-swap) The container is not allowed to
use more than L bytes of memory, swap *plus* memory usage is limited
by S.
</td>
</tr>
</tbody>
</table>
### CPU share constraint ### CPU share constraint
@ -492,7 +568,6 @@ will be accessible within the container.
By default, the container will be able to `read`, `write`, and `mknod` these devices. By default, the container will be able to `read`, `write`, and `mknod` these devices.
This can be overridden using a third `:rwm` set of options to each `--device` flag: This can be overridden using a third `:rwm` set of options to each `--device` flag:
$ sudo docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk /dev/xvdc $ sudo docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk /dev/xvdc
Command (m for help): q Command (m for help): q
@ -770,7 +845,7 @@ If you restart the source container (`servicename` in this case), the recipient
container's `/etc/hosts` entry will be automatically updated. container's `/etc/hosts` entry will be automatically updated.
> **Note**: > **Note**:
> Unlike host entries in the `/ets/hosts` file, IP addresses stored in the > Unlike host entries in the `/etc/hosts` file, IP addresses stored in the
> environment variables are not automatically updated if the source container is > environment variables are not automatically updated if the source container is
> restarted. We recommend using the host entries in `/etc/hosts` to resolve the > restarted. We recommend using the host entries in `/etc/hosts` to resolve the
> IP address of linked containers. > IP address of linked containers.