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

if image and image.get('Id'):
            if container and container.Image:
                if image.get('Id') != container.Image:
                    self.diff_tracker.add('image', parameter=image.get('Id'), active=container.Image)
                    return True
        return False
    def update_limits(self, container):
        limits_differ, different_limits = container.has_different_resource_limits()
        if limits_differ:
            self.log("limit differences:")
            self.log(different_limits.get_legacy_docker_container_diffs(), pretty_print=True)
            self.diff_tracker.merge(different_limits)
        if limits_differ and not self.check_mode:
            self.container_update(container.Id, self.parameters.update_parameters)
            return self._get_container(container.Id)
        return container
    def update_networks(self, container, container_created):