<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->

When using docker_container module, attempting to publish a port, using a range of ports from the host, does not work as expected. Instead, Ansible will attempt to use the port number in the range.

Example:

Trying to get a similar docker command as the following running in Ansible.

```
docker run -p 80-85:80 -d linuxserver/nginx
```

As of now, this will cause an error stating `Bind for 0.0.0.0:80 failed: port is already allocated"`

This is a supported command argument in Docker. 

Ref: https://docs.docker.com/network/links/

> Instead, you may specify a range of host ports to bind a container port to that is different than the default ephemeral port range:
>
> `$ docker run -d -p 8000-9000:5000 training/webapp python app.py`


##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
docker_container

##### ANSIBLE VERSION

<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
(venv) ➜  cloudbox git:(develop) ✗ ansible --version
ansible 2.10.0.dev0
  config file = /srv/git/cloudbox/ansible.cfg
  configured module search path = [u'/home/seed/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/ansible/lib/ansible
  executable location = /opt/ansible/bin/ansible
  python version = 2.7.15+ (default, Oct  7 2019, 17:39:04) [GCC 7.4.0]
```

```
cloudbox git:(develop) ✗ ansible --version
ansible 2.9.2
  config file = /srv/git/cloudbox/ansible.cfg
  configured module search path = [u'/home/seed/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.15+ (default, Oct  7 2019, 17:39:04) [GCC 7.4.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_CALLBACK_WHITELIST(/srv/git/cloudbox/ansible.cfg) = [u'profile_tasks']
DEFAULT_FACT_PATH(/srv/git/cloudbox/ansible.cfg) = /srv/git/cloudbox/ansible_facts.d
DEFAULT_HASH_BEHAVIOUR(/srv/git/cloudbox/ansible.cfg) = merge
DEFAULT_HOST_LIST(/srv/git/cloudbox/ansible.cfg) = [u'/srv/git/cloudbox/inventories/local']
DEFAULT_LOG_PATH(/srv/git/cloudbox/ansible.cfg) = /srv/git/cloudbox/cloudbox.log
DEFAULT_ROLES_PATH(/srv/git/cloudbox/ansible.cfg) = [u'/srv/git/cloudbox/roles', u'/srv/git/cloudbox/resources/roles']
DEFAULT_VAULT_PASSWORD_FILE(/srv/git/cloudbox/ansible.cfg) = /etc/ansible/.ansible_vault
RETRY_FILES_ENABLED(/srv/git/cloudbox/ansible.cfg) = False
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Ubuntu 18.04 LTS. Bare-metal setup

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- hosts: localhost
  tasks:
    - name: Create and start container
      docker_container:
        name: nginx
        image: linuxserver/nginx
        pull: yes
        published_ports:
          - "80-85:80"
        networks:
          - name: cloudbox
            aliases:
              - nginx2
        purge_networks: yes
        restart_policy: unless-stopped
        state: started
    - name: Create and start container
      docker_container:
        name: nginx2
        image: linuxserver/nginx
        pull: yes
        published_ports:
          - "80-85:80"
        networks:
          - name: cloudbox
            aliases:
              - nginx3
        purge_networks: yes
        restart_policy: unless-stopped
        state: started

```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Containers nginx2 and nginx3 to be created and binded to whatever host port was available between 80 and 85.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
https://pastebin.com/MxMrGaHm

Both containers are being binded to port 80 on the host.
type: int
      start_period:
        description:
          - Start period for the container to initialize before starting health-retries countdown.
          - The default used by the Docker daemon is C(0s).
        type: str
    version_added: "2.8"
  hostname:
    description:
      - The container's hostname.
    type: str
  ignore_image:
    description:
      - When I(state) is C(present) or C(started), the module compares the configuration of an existing
        container to requested configuration. The evaluation includes the image version. If the image
        version in the registry does not match the container, the container will be recreated. You can
        stop this behavior by setting I(ignore_image) to C(True).
      - "*Warning:* This option is ignored if C(image: ignore) or C(*: ignore) is specified in the
        I(comparisons) option."
    type: bool
    default: no
    version_added: "2.2"
  image:
    description:
      - Repository path and tag used to create the container. If an image is not found or pull is true, the image
        will be pulled from the registry. If no tag is included, C(latest) will be used.
      - Can also be an image ID. If this is the case, the image is assumed to be available locally.
        The I(pull) option is ignored for this case.
    type: str
  init: