##### SUMMARY
Various options which reflect container properties have default values. In particular, these are `auto_remove`, `detach`, `init`, `interactive`, `memory`, `paused`, `privileged`, `read_only`, `tty`. While the defaults usually make sense (and coincide with the defaults used by docker), these are highly problematic in situations where not all options affected by a container are specified in `docker_container` usages.

For example, when `docker_container` is used with `restart: yes`, and no other options are specified, the container is restarted, **except** if the container uses a non-default value for one of these properties. In that case, the module will recreate the container with no options (except the implicit defaults), which is usually **not** what the user wants.

Unfortunately,  removing the defaults breaks backwards compatibility. The obvious solution to this, i.e. deprecating the default values (and remove them in four versions, i.e. 2.14) is also not very good, since it will create a *lot* of noise, since in most tasks and playbooks, these options are not specified (and thus the deprecation warning for each of them should be shown). Telling users to disabling warnings for `docker_container` tasks is not a good idea either, especially since in some cases, warnings from docker daemon are passed on.

This issue is about discussing this problem and collecting ideas on how this issue can be resolved eventually. Feel free to add any ideas or comments you have!

##### ISSUE TYPE
- Feature Idea
- Bug Report

##### COMPONENT NAME
docker_container

##### ANSIBLE VERSION
```
all
```
version_added: "2.1"
notes:
  - For most config changes, the container needs to be recreated, i.e. the existing container has to be destroyed and
    a new one created. This can cause unexpected data loss and downtime. You can use the I(comparisons) option to
    prevent this.
  - If the module needs to recreate the container, it will only use the options provided to the module to create the
    new container (except I(image)). Therefore, always specify *all* options relevant to the container.
  - When I(restart) is set to C(true), the module will only restart the container if no config changes are detected.
    Please note that several options have default values; if the container to be restarted uses different values for
    these options, it will be recreated instead. The options with default values which can cause this are I(auto_remove),
    I(detach), I(init), I(interactive), I(memory), I(paused), I(privileged), I(read_only) and I(tty).
options:
  auto_remove:
    description:
      - Enable auto-removal of the container on daemon side when the container's process exits.
    type: bool
    default: no
    version_added: "2.4"
  blkio_weight:
    description:
      - Block IO (relative weight), between 10 and 1000.
    type: int
  capabilities:
    description:
      - List of capabilities to add to the container.
    type: list
    elements: str
  cap_drop:
    description:
      - List of capabilities to drop from the container.