raising ArgumentError for circular dependency and self-linked containers rather than RuntimeError
including both mapped ports and exposed ports when determining ports and protocols for dependency links