본문 바로가기
System · Infra/Docker

[Docker] 도커 네트워크로 컨테이너 이름으로 컨테이너끼리 접속하기

by dev_윤환 2023. 11. 28.

도커 네트워크란?

도커의 컨테이너들은 결국 논리적 컴퓨터들이라고 볼 수 있다.

현실에서 물리적 컴퓨터들을 LAN케이블과 스위치에 물리면 하나의 네트워크를 형성할 수 있다.

도커의 컨테이너들은 가상의 컴퓨터이기에 가상의 네트워크도 만들 수 있다.

도커 네트워크를 사용하면 다른 컨테이너의 웹서버를 컨테이너 명으로 접속할 수 있다.

도커 네트워크는 도커가 제공하는 네트워크 서비스 라고 생각한다.

 


도커 네트워크를 사용한 예제 진행 순서

1. 도커 네트워크 만들기
2. nginx 이미지를 사용해 메인과 서브 컨테이너 만들기
3. 접속시 보여줄 서브 컨테이너 웹서버의 index.html 수정
4. 만들어준 컨테이너를 네트워크에 연결
5. 메인 컨테이너에서 서브 컨테이너 명으로 웹서버 접속하기

1. 도커 네트워크 만들기

사용중인 os의 cli 에서 "docker network create 옵션 이름"

위 명령어로 네트워크를 생성한다.

 

"docker network ls" 명령어로 네트워크 목록을 확인해보면 아래와 같이 생성된 것을 볼 수 있다.

 

 

2. nginx 이미지를 사용해 메인과 서브 컨테이너 만들기

최신버전의 nginx 이미지를 pull 해준다

받아온 nginx 이미지에는 vi에디터가 설치 안되어 있으므로 컨테이너로 올린 다음 아래와 같은 순서로 설치해주고 이미지로 만들어준다.

nginx_edit 명으로 nginx이미지를 컨테이너 백그라운드로 실행
실행중인 nginx컨테이너의 bash 쉘에 접속
vim 설치를 위해 apt업데이트
vim 설치
단축키 사용을 위해 배쉬 명령어 수정
위와 같이 주석 제거후 저장
설정을 마쳤으니 배쉬쉘에서 나가기
설정해준 컨테이너를 nginx_edited이름으로 이미지 생성

이제 해당 이미지를 이용해  컨테이너를 3개 만들어준다.

이렇게 3개를 만들어 줬다. nginx_custom이 메인으로 사용할 컨테이너다.

3. 접속시 보여줄 서브 컨테이너 웹서버의 index.html 수정

nginx의 이미지를 가지고 만들었기 때문에 위 경로에 index.html파일이 있다.

html의 title과 h1태그에 slave1임을 확인할 수 있게 적어 줬다.

다른 서브 컨테이너 nginx_slave2 컨테이너에도 위와 같이 바꿔준다.

 

4. 만들어준 컨테이너를 네트워크에 연결

위와 같이 명령어를 입력하면 컨테이너를 위에서 만들어준 네트워크에 연동된다.

연결되었는지 확인할려면 아래와 같이 입력하면 된다.

json형태로 쭈르르 나오는 데, 아래 이 부분을 보면 연결된것을 볼 수 있다. 

 

나머지 메인 컨테이너(글쓴이의 경우 nginx_custom)와 나머지 nginx_slave2 도 똑같이 연결해준다.

 

 

 

5. 메인 컨테이너에서 서브 컨테이너 명으로 웹서버 접속하기

이제 메인 컨테이너에 접속해서 curl에 "http://원하는서브컨테이너명 "으로 접속해보면 바꿔놓았던 html을 볼 수 있다.