Docker 컨테이너간 호스트이름으로 통신

2021. 10. 19. 23:34IT/Docker

1. docker 컨테이너 2개 실행

 

nusevoli@nusevoli:~$ docker run -d --rm --name ubuntu0 ubuntu:xenial tail -f /dev/null
d2e4753477f1bea65622b96f3c757840f9b98f7b1578d5959ee80fae551a5674
nusevoli@nusevoli:~$ docker run -d --rm --name ubuntu1 ubuntu:xenial tail -f /dev/null
c1c0db1d1aec00b6f694dc21c9ee34db75f69a77af47965c16d7c8eeb9223de7

nusevoli@nusevoli:~$ docker ps
CONTAINER ID   IMAGE           COMMAND               CREATED         STATUS         PORTS     NAMES
c1c0db1d1aec   ubuntu:xenial   "tail -f /dev/null"   9 minutes ago   Up 9 minutes             ubuntu1
d2e4753477f1   ubuntu:xenial   "tail -f /dev/null"   9 minutes ago   Up 9 minutes             ubuntu0

 

2. A컨테이너(ubuntu0)에서 B컨테이너로 ping

 

nusevoli@nusevoli:~$ docker exec ubuntu0 ping c1c0db1d1aec
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ping": executable file not found in $PATH: unknown

 

ping이 안 깔려있네?!

apt install iputils-ping 명령으로 각각 설치해주고, 다시 시도

 

nusevoli@nusevoli:~$ docker exec ubuntu0 ping c1c0db1d1aec
ping: unknown host c1c0db1d1aec

 

host를 못찾는다고?

 

 

3. 네트워크 생성 후 연결

 

nusevoli@nusevoli:~$ docker network create net0
be77ee1f6df8e16e0e305695184514ed864dea8d4b961d5dceda0848e510fe94

nusevoli@nusevoli:~$ docker network connect net0 ubuntu0
nusevoli@nusevoli:~$ docker network connect net0 ubuntu1

 

 

4. ping 재시도

 

nusevoli@nusevoli:~$ docker exec ubuntu0 ping c1c0db1d1aec
PING c1c0db1d1aec (172.19.0.3) 56(84) bytes of data.
64 bytes from ubuntu1.net0 (172.19.0.3): icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from ubuntu1.net0 (172.19.0.3): icmp_seq=2 ttl=64 time=0.081 ms

 

nusevoli@nusevoli:~$ docker exec ubuntu1 ping d2e4753477f1
PING d2e4753477f1 (172.19.0.2) 56(84) bytes of data.
64 bytes from ubuntu0.net0 (172.19.0.2): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from ubuntu0.net0 (172.19.0.2): icmp_seq=2 ttl=64 time=0.074 ms

 

 

같은 네트워크에 연결된 컨테이너들은 host이름으로 통신가능

=> TCP통신, REST API호출 등등 가능하다는 의미!!!