If you are looking for what replaced the legacy link between dockers, then I believe what you are looking for is covered here.
(The following is based mostly on my observations, not documentation)
Basically, all containers start in default network “bridge”. In this configuration, all containers can see every port on every other container. You can access each container by its ip (which of course is likely to change). I believe you can not have dockers access each other by name (which by default is disabled) in the bridge network because the docker dns server is not added to the resolv.conf file in the bridge network, it’s special that way.
To have containers access each other by name, you need to place them in a network you create using the
docker network command. Creating your own docker network also allows you to further partition the docker container access up, so that only certain containers can access the ports of other containers. You create networks with the
docker network command, and execute containers in a specific network with the
--network argument when running them.
Once you are in your network (which is still type bridge, so don’t be confused by that. It’s just not named bridge), You can have each container discover the ip address via name (which by default is disabled when you get a random name). If you want to make something to work well, you typically want to assign your container a name with the
--name argument when running it.
Putting it all together:
docker network create my_network
docker run -d --network my_network --name pingee debian:jessie sleep 1000
docker run -it --rm --network my_network debian:jessie ping pingee