본문 바로가기
AWS/Part 5. Ch02 도커를 이용한 컨테이너 관리

CH02_06. 도커 컨테이너 다루기 네트워크

by Engineer-Lee 2022. 6. 20.
반응형

 

 

 

컨테이너의 포트를 호스트의 IP:PORT와 연결하여 서비스를 노출하는 명령어

 

 

직접 실습을 해보자

첫 번째로 docker run -d -p 80:80 nginx 명령어로 모든 IP의 80번 포트에 대해 컨테이너의 80번으로 맵핑된다.

 

두 번째로 docker run -d -p 80 nginx 명령어로 컨테이너 포트만 지정하면 호스트 IP의 49155포트로 연결된 걸 볼 수 있다.

 

세 번째는 docker run -d -p 127.0.0.1:80:80 nginx 명령어로 ec2 인스턴스의 private ip나 public ip가 아닌 로컬 호스트의 80번 포트와 컨테이너의 80번 포트를 맵핑했다.

 

 

 

 

다음으로 expose와 publish 옵션에 대해 알아보자

 

expose 명령어를 이용해서 컨테이너를 실행시켜보면 80번 포트만 적혀있고 맵핑됐다는 화살표 표시가 없다.

이는 80번 포트로 curl를 보내도 아무런 동작을 하지않는다. 이는 그저 문서화 용도로 쓰인다.

 

 

 


이번에는 도커 네트워크 드라이버에 대해 알아보자

docker network에는 몇 가지 옵션을 붙여서 사용할 수 있다.

docker network ls 명령어로 네트워크 구성들을 볼 수 있다.

 

 

아래 링크에서 실습 파일들을 ec2 인스턴스에 다운로드 받자

https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/1-docker-network

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

 

처음으로 사용해볼 네트워크는 none 네트워크다.

 

이 쉘스크립트를 실행하면 우분투 bash쉘로 들어오게 된다.

그리고 다른 터미널로 docker ps 명령어를 입력하면  bash 커맨드로 컨테이너가 실행 중인걸 볼 수 있다.

inspect 명령어로 확인해보면 브릿지, 드라이버, ip주소, mac주소 등등이 none 상태인 걸 볼 수 있다.

 

 

apt update 명령어를 입력하면 네트워크 오류가 일어나는 것도 볼 수 있다.

 

 

 

 

 

다음으로 호스트 네트워크를 알아보자

host.sh 스크립트를 실행하면 호스트에서 동작하는 컨테이너가 생성되어서 ports에 아무런 정보가 보이지 않는다.

 

이는 로컬 호스트의 3000번 포트로 동작되고 있는 것이다.

 

 

 

 

 

 

다음으로 브릿지 네트워크를 알아보자 

bridge.sh에서는 기본 브릿지를 사용하는 것이 아니라 사용자 정의 브릿지 네트워크를 만들도록 하였다.

그 후 nginx와 grafana를 실행하도록 했다.

--net-alias 옵션은 브릿지 네트워크 안에서 설정한 도메인 네임으로 컨테이너 IP를 검색할 수 있도록 한다.

 

bridge.sh 스크립트를 실행하면 새 브릿지가 생성된 걸 볼 수 있고 "nginx"와 "grafana/grafana" 라는 컨테이너가 생성된 걸 볼 수 있다.

내부 도메인이 생성된 걸 볼 수 있고 nginx와 grafana가 동일한 브릿지 네트워크로 생성된 것이다.

 

 

 

호스트에서 ifconfig 명령어를 입력하면 컨테이너 갯수만큼 veth가 생성됐고 ens5라는 호스트의 eth도 볼 수 있다.

또한 docker0라는 기본 브릿지 네트워크와 bridge.sh로 만든 사용자 정의 브릿지 네트워크도 볼 수 있다.

 

반응형