We're trying to fix as many broken links as possible before modules move into collections.  This is the batch of broken links on docker modules.

NOTE: the link checker sometimes reports an error where a link actually works. Ignore those if you find them.

##### ISSUE TYPE
- Documentation Report

##### COMPONENT NAME
<!--- Write the short name of the rst file, module, plugin, task or feature below, use your best guess if unsure -->
docs.ansible.com

###### BROKEN LINKS
https://docs.ansible.com/ansible/devel/modules/docker_compose_module.html#docker-compose-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_image_module.html#docker-image-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_config_module.html#docker-config-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_container_info_module.html#docker-container-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_host_info_module.html#docker-host-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_image_info_module.html#docker-image-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_login_module.html#docker-login-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_network_module.html#docker-network-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_network_info_module.html#docker-network-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_node_module.html#docker-node-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_node_info_module.html#docker-node-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_prune_module.html#docker-prune-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_secret_module.html#docker-secret-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_swarm_module.html#docker-swarm-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_swarm_info_module.html#docker-swarm-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_swarm_service_module.html#docker-swarm-service-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_swarm_service_info_module.html#docker-swarm-service-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_volume_module.html#docker-volume-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

https://docs.ansible.com/ansible/devel/modules/docker_volume_info_module.html#docker-volume-info-module
├─BROKEN─ https://docker-py.readthedocs.io/en/stable/machine/ 

try:
            
            with open(self.path, 'rb') as f:
                data = f.read()
            
            format = crypto_utils.identify_private_key_format(data)
            if format == 'raw':
                if len(data) == 56 and CRYPTOGRAPHY_HAS_X448:
                    return cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey.from_private_bytes(data)
                if len(data) == 57 and CRYPTOGRAPHY_HAS_ED448:
                    return cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey.from_private_bytes(data)
                if len(data) == 32:
                    if CRYPTOGRAPHY_HAS_X25519 and (self.type == 'X25519' or not CRYPTOGRAPHY_HAS_ED25519):
                        return cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey.from_private_bytes(data)
                    if CRYPTOGRAPHY_HAS_ED25519 and (self.type == 'Ed25519' or not CRYPTOGRAPHY_HAS_X25519):
                        return cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey.from_private_bytes(data)
                    if CRYPTOGRAPHY_HAS_X25519 and CRYPTOGRAPHY_HAS_ED25519:
                        try:
                            return cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey.from_private_bytes(data)
                        except Exception:
                            return cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey.from_private_bytes(data)
                raise PrivateKeyError('Cannot load raw key')
            else:
                return cryptography.hazmat.primitives.serialization.load_pem_private_key(
                    data,
                    None if self.passphrase is None else to_bytes(self.passphrase),
                    backend=self.cryptography_backend