<!--- 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 -->

A docker container cannot be started with ip-bound port mappings when using both, ipv4 and ipv6 addresses:

With #46596, i expected 

    docker_container:
      name: "test123"
      image: "ubuntu:latest"
      tty: yes
      interactive: yes
      networks:
      - name: bridge
      purge_networks: yes
      pull: yes
      ports:
      - "127.0.0.1:53:53/tcp"
      - "127.0.0.1:53:53/udp"
      - "[::1]:53:53/tcp"
      - "[::1]:53:53/udp"

to behave like 

    docker run --rm -ti -p "127.0.0.1:53:53/tcp" -p "127.0.0.1:53:53/udp" -p "[::1]:53:53/tcp" -p "[::1]:53:53/udp" ubuntu:latest

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                        NAMES
    3e7204cabfeb        ubuntu:latest       "/bin/bash"         2 seconds ago       Up 1 second         127.0.0.1:53->53/tcp, 127.0.0.1:53->53/udp, ::1:53->53/tcp, ::1:53->53/udp   awesome_banach

However, the deployment fails with 

    fatal: [localhost]: FAILED! => {"changed": false, "msg": "Error starting container a26b2b9b2497195af25770878fd2c084e984e3d2c70bef602261cf76aad1a0bb: 500 Server Error: Internal Server Error (\"driver failed programming external connectivity on endpoint test123 (c41303e4e84c59d838166594918137135dfbd22e0bce311e3302f88135874d87): Error starting userland proxy: listen tcp 0.0.0.0:53: bind: address already in use\")"}

Note that is says `0.0.0.0:53`, which may be related to #40258. Removing the two IPv6 mappings works as expected.

From what i can see, the mapping is correctly parsed in 
`ansible.modules.cloud.docker.docker_container.TaskParameters._parse_publish_ports` - i suspect the error is in the passing to the docker-py module.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
docker_container

##### ANSIBLE VERSION
```
ansible 2.8.3
  config file = /home/johann/.ansible.cfg
  configured module search path = ['/home/johann/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.3 (default, Apr  3 2019, 05:39:12) [GCC 8.3.0]
```

##### CONFIGURATION
```
ANSIBLE_SSH_ARGS(/home/johann/.ansible.cfg) = -o ControlMaster=auto -o ControlPersist=60s -o ForwardAgent=yes -o ControlPath="/home/johann/.ansible/ansible-ssh-%h-%p-%r"
DEFAULT_HOST_LIST(/home/johann/.ansible.cfg) = ['/home/johann/dev/repos/ercpe-ansible/hosts']
DEFAULT_TRANSPORT(/home/johann/.ansible.cfg) = ssh
DEFAULT_VAULT_PASSWORD_FILE(/home/johann/.ansible.cfg) = /home/johann/bin/ansible-vault-pass
```

##### OS / ENVIRONMENT
Tested on Ubuntu 19.04 (disco)

##### STEPS TO REPRODUCE
See Summary

##### EXPECTED RESULTS
See Summary

##### ACTUAL RESULTS
See Summary

restarted. Use force_kill to kill a container rather than stopping it. Use keep_volumes to retain volumes associated
        with a removed container.'
      - 'I(stopped) - Asserts that the container is first I(present), and then if the container is running moves it to a stopped
        state. Use force_kill to kill a container rather than stopping it.'
    type: str
    default: started
    choices:
      - absent
      - present
      - stopped
      - started
  stop_signal:
    description:
      - Override default signal used to stop the container.
    type: str
  stop_timeout:
    description:
      - Number of seconds to wait for the container to stop before sending SIGKILL.
        When the container is created by this module, its C(StopTimeout) configuration
        will be set to this value.
      - When the container is stopped, will be used as a timeout for stopping the
        container. In case the container has a custom C(StopTimeout) configuration,
        the behavior depends on the version of the docker daemon. New versions of
        the docker daemon will always use the container's configured C(StopTimeout)
        value if it has been configured.
    type: int
  trust_image_content:
    description:
      - If C(yes), skip image verification.
    type: bool