##### 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
```
etc_hosts:
    description:
      - Dict of host-to-IP mappings, where each host name is a key in the dictionary.
        Each host name will be added to the container's C(/etc/hosts) file.
    type: dict
  exposed_ports:
    description:
      - List of additional container ports which informs Docker that the container
        listens on the specified network ports at runtime.
      - If the port is already exposed using C(EXPOSE) in a Dockerfile, it does not
        need to be exposed again.
    type: list
    elements: str
    aliases:
      - exposed
      - expose
  force_kill:
    description:
      - Use the kill command when stopping a running container.
    type: bool
    default: no
    aliases:
      - forcekill
  groups:
    description:
      - List of additional group names and/or IDs that the container process will run as.
    type: list
    elements: str
  healthcheck:
    description: