250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[AWS] EC2안에 도커를 설치한 후 posgresql와 프로젝트를 네트워크로 연결시켜서 사용하는 방법 본문

[Snow-ball]프로그래밍(컴퓨터)/여러가지

[AWS] EC2안에 도커를 설치한 후 posgresql와 프로젝트를 네트워크로 연결시켜서 사용하는 방법

Snow-ball 2023. 11. 28. 21:13
반응형

EC2안에 프로젝트와 데이터베이스를 함께 사용하기 위한 작업이다.

이 글은 프로젝트와 프로젝트 내에 도커 셋팅은 되어 있다는 가정하에 진행한다.

아직 안되어있다면 세팅하고 따라가는걸 추천한다.

 

 

 


 

 

 

첫째. 현재는 [ docker ps ] 명령어를 치면 아무것도 생성되어 있지 않다.

 

 

 

우선, 데이터베이스와 프로젝트가 서로 통신이 되기 위해서는 network가 필요하다.

ec2를 만들고 나서 [ docker network ls ] 를 입력하면 아래와 같이 3가지의 네트워크가 기본적으로 생성되어 있다.

 

 

 

그리고나서 확인을 해본 후 내가 사용할 네트워크를 생성해보자.

[ docker network create connet-net ] 을 입력하면 connet-net 이라는 이름의 네트워크가 생성된다.

그리고 나서 다시 [ docker network ls ] 를 입력하면 아래처럼 생성된 걸 확인할 수 있다.

 

DRIVER의 경우는 지정하지 않으면 default: bridge로 되어 있는데, bridge로 사용하면 되기 때문에 그대로 진행한다.

 

DRIVER는 bridge가 많이 사용된다고 하지만, 나머지들에 대해서도 알아놔보자.

1) bridge: 기본 네트워크 드라이버로, 동일 호스트 내 컨테이너 간 통신에 적합하다.

- 여기서 "호스트"라는 표현에 대해서 설명이 필요할 것 같다. 도커에서 호스트는 컨테이너를 실행하는 기본 시스템을 가리키며, "동일 호스트 내" 컨테이너라 함은 같은 서버 또는 물리적 기계에서 실행되는 컨테이너를 의미한다. 이 컨테이너들은 같은 네트워크 리소스와 환경을 공유할 수 있다. 예를 들어, bridge 네트워크 드라이버를 사용한다면, 같은 호스트 내의 컨테이너들은 서로 통신할 수 있지만 외부 네트워크와는 분리될 수 있다.

2) host: 컨테이너와 Docker 호스트 간의 네트워크 격리를 제거하고 호스트의 네트워킹을 직접 사용한다.

3) overlay: 여러 Docker 데몬을 서로 연결하고 다른 호스트에 있는 컨테이너 간 통신을 가능하게 한다.

4) ipvlan: IPv4와 IPv6 주소 제어를 사용자에게 제공하며, 언더레이 네트워크 통합에 유용하다.

5) macvlan: 컨테이너가 자신의 MAC 주소를 가진 네트워크상의 물리적 장치처럼 보이게 한다.

6) none: 컨테이너를 완전히 네트워크로부터 격리시켜 접근 불가능하게 한다.

7) 재3자 플러그인: Docker를 특수한 네트워크 스택과 통합할 수 있게 한다.

 

 

 

 

둘째. 네트워크를 설정해놨으니 데이터베이스(postgersql)를 설치하면서 network도 연결하자.

명령어는 아래와 같다.

1
docker run -itd --network connect-net --name 디비이름 -5432:5432 -e POSTGRES_USER=디비유저이름 -e POSTGRES_PASSWORD=디비비번 -e POSTGRES_DB=디비기본이름 --restart always postgres:14.8-alpine
cs

--itd : 컨테이너를 분리모드('-d')로 실행하면서 가상 TTY('-it')를 할당한다.

--network connect-net : 'connect-net'이라는 사용자 정의 네트워크에 컨테이너를 연결한다.

--restart always : 컨테이너가 명시적으로 중지되지 않는 한 항상 재시작하도록 설정한다.

 

 

그리고 나서 [ docker ps ]를 하면 실행중인걸 확인 할 수 있다.

 

 

그렇다면, 네트워크에도 제대로 연결됬는지 확인해보자.

[ docker network inspect connect-net ] 을 입력해보자.

그러면 Containers > Name: "psqldb"를 확인해볼 수 있다. 그렇다면 의도한대로 적용이 된 것이다.

 

 

 

셋째. 네트워크와 데이터베이스를 연결해놓았다면, 이제는 프로젝트를 push 를 해주면된다. 그리고 push 후 [docker ps ] 를 입력하면 두개가 떠있다.

 

 

 

 

 

 

 

반응형
Comments