Por padrão o docker cria uma rede que é utilizada por todos os containers usados em determinado ambiente. Nessa rede, cada container recebe um ip dinâmico. Além disso, essa rede default do docker permite apenas o uso de ips para buscar outros containers.
O que quero dizer com isso?
Veja esse desenho:
Para que o container 1 fale com o container 2 é necessário saber o ip. Descobrir o ip não é trabalhoso, com o comando docker inspect é fácil descobrir, mas também existe a opção de atribuir nomes a esses containers e procurá-los na rede pelos nomes.
Para isso ser possível deve-se criar uma rede. Exemplo de comando:
docker network create --driver bridge nome_nova_rede
É possível escolher o driver de rede através do parâmetro --driver nome_driver_rede.
Aqui usei o comando e criei uma rede:
Após criar a rede, basta usá-la junto com o comando docker run e dar nome ao container, exemplo:
docker run -it --name container01 --network nome_nova_rede -d -p 8080:3000 nome_imagem_usada
Usei o comando acima para criar um container que use essa rede:
E aqui inspecionei usando o comando docker inspect container01, que é o nome que dei:
Pronto, para configurações como url de banco de dados por exemplo, é possível usar o nome dado ao container utilizado na rede que foi criada.