Is Docker Swarm Mode routing mesh a built-in substitute for linkerd routing mesh? In other words, is there still any reason to look into linkerd if there is an out-of-the-box solution?
They do fundamentally different things. Docker's swarm mode routing mesh is at layer 3/4 --- if you have something running on port X in one container, you can have every container listen on port X and route that traffic to the container that's actually using it.
Linkerd's service mesh operates at layer 5/7. It does request-level failure and latency handling, load balancing across instances, and logical routing ("service a" => "datacenter 1, prod cluster, version 1.2 of service a")
You can use the two in conjunction.