일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 연결리스트
- vim-go
- JUCE
- C++ library
- 운영체제
- LOB
- BOJ
- 공룡책
- gui
- c++ heap
- 코딩
- Nebula
- a tour of go
- OS
- C언어
- C++ gui 라이브러리
- 백준
- C++
- go channel
- 자료구조
- JUCE library
- 리듬게임
- JUCE 튜토리얼
- 알고리즘
- C++ gui
- tour of go
- go
- JUCE라이브러리
- Docker
- 프로그래밍
- Today
- Total
CafeM0ca
AWS 도메인 연결과 Docker 컨테이너 통신 본문
이전 게시글에서 Go 서버 애플리케이션을 aws ec2에 도커로 배포했다. 이번 글에서는 구입한 도메인과 AWS주소를 연결하는 방법과 Docker 컨테이너간 통신에 대해 작성해본다.
AWS와 DNS
초기 인스턴스를 살펴보면 퍼블릭 IPv4와 퍼블릭 IPv4 DNS가 눈에 보인다. 개발자는 해당 IP주소를 통해 서버를 접근할 수 있다.
탄력적 IP(Elastic IP) 주소가 눈에 띈다. 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소다. 일반 사용자는 저 주소를 통해 서버에 접근시키면 된다. 탄력적 IP는 네트워크 및 보안 > 탄력적 IP에서 탄력적 IP 주소를 할당하면 된다.
탄력적 IP를 할당받았으면 탄력적 IP 주소 연결을 통해 인스턴스를 연결해주면 끝난다.
이제 구입한 도메인과 탄력적 IP를 매핑시켜주면 된다.
AWS Route5s
https://console.aws.amazon.com/route53/v2/home#Dashboard
AWS는 DNS 연결을 위해 Route5s를 제공하고 있다.
DNS 관리에 호스팅 영역에 들어가서 호스팅 영역 생성을 통해 도메인을 등록해주고 레코드 생성을 통해 탄력적 IP를 기입해주면 끝난다.
도커 컨테이너간 통신
42report.today서비스는 외부 API를 통해 검증하는 서비스와 Go로 작성된 RPC 통신을 한다. 확장을 염두해두고 마이크로서비스로 개발했는데 더 이상 서비스 운영이 필요없어져서 아쉽긴하다.
편하게 두 서비스를 레포트 서비스와 게이트웨이 서비스로 부르겠다. 레포트와 게이트웨이 서비스 모두 ec2에서 도커 위에서 작동한다. 레포트는 80번포트를 열어놨고 게이트웨이는 8081번 포트를 사용한다. 이 상태로 레포트 서비스가 게이트웨이 서비스에 접근하면 상상대로 잘 될 줄 알았다.
docker network
컨테이너는 격리된 환경(고립성)에서 돌아가기 때문에 다른 컨테이너와 통신이 불가능하다. 때문에 docker network를 사용해야 한다. docker network에 대해서 간단한 명령어들은 이 블로그를 참조하자.
레포트와 게이트웨이를 이어주기 위해 docker network create rpc로 rpc network를 만들어주고 docker로 실행할 때 docker run -network rpc -network 옵션을 통해 rpc 네트워크에 컨테이너를 붙여줘서 정상적으로 통신이 가능해졌다.
컨테이너 접속과 종료
컨테이너를 실행할 때 docker run -it 옵션을 붙여주면 실행과 동시에 쉘에 접속할 수 있다. "음! 접속이 잘 되는군"하고 exit이나 ctrl+c 해버리면 컨테이너가 종료된다. 따라서 컨테이너에 접속한 상태에서 ctrl+p와 ctrl+q를 순서대로 눌러줘야 컨테이너 종료 없이 컨테이너를 빠져나올 수 있다.
컨테이너를 백그라운드로 실행하기 위해서는 docker run -d 옵션을 붙여주면 된다. 백그라운드 상태에서 포그라운드로 전환하려면 docker attach [contrainer_name]을 통해 포그라운드로 전환할 수 있다.
-it 옵션을 붙여주지 않고 백그라운드로 실행했다면, docker exec -it [container_name] /bin/bash 를 통해 쉘로 접속할 수 있다.
Reference
- docker network
- AWS EC2 인스턴스를 외부 DNS에 연결하기 (탄력적 IP)
- https://falsy.me/aws-ec2-인스턴스를-외부-dns에-연결하기-탄력적-ip/
'Programming > Go' 카테고리의 다른 글
[Go] package public/private access (0) | 2022.07.21 |
---|---|
[Go] sort In struct and map (0) | 2021.07.23 |
Go 서버 애플리케이션을 Docker로 AWS EC2에 배포 (0) | 2021.05.07 |
[Go] 패키지 네이밍(package naming) (0) | 2021.04.06 |
[Go] Go channel 데이터 파이프라인 (2) | 2021.04.05 |