##### 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
```
type: list
    elements: str
    version_added: "2.7"
  cleanup:
    description:
      - Use with I(detach=false) to remove the container after successful execution.
    type: bool
    default: no
    version_added: "2.2"
  command:
    description:
      - Command to execute when the container starts. A command may be either a string or a list.
      - Prior to version 2.4, strings were split on commas.
    type: raw
  comparisons:
    description:
      - Allows to specify how properties of existing containers are compared with
        module options to decide whether the container should be recreated / updated
        or not.
      - Only options which correspond to the state of a container as handled by the
        Docker daemon can be specified, as well as C(networks).
      - Must be a dictionary specifying for an option one of the keys C(strict), C(ignore)
        and C(allow_more_present).
      - If C(strict) is specified, values are tested for equality, and changes always
        result in updating or restarting. If C(ignore) is specified, changes are ignored.
      - C(allow_more_present) is allowed only for lists, sets and dicts. If it is
        specified for lists or sets, the container will only be updated or restarted if
        the module option contains a value which is not present in the container's
        options. If the option is specified for a dict, the container will only be updated
        or restarted if the module option contains a key which isn't present in the