"내 서비스는 도커 이미지 형태로 EC2 안의 컨테이너에서 동작 중인 거야?”
“도커 이미지가 실행되어서, 현재 EC2 안에서 컨테이너 형태로 동작 중이다”.
EC2라는 서버 안에서, 나의 서비스가 하나의 독립된 컨테이너 공간을 할당받아 사용자들의 요청을 처리하고 있는 상태이다.
"컨테이너가 삭제되었다면, 도커 이미지는 삭제되지 않지만 서비스는 중단된 상태야?”
맞다. 서비스 중단 상태가 된다. 하지만 도커 이미지는 고스란히 남아있으므로, 언제든지 다시 docker run 명령어를 입력하면 똑같은 컨테이너를 띄워서 복구할 수 있다.
"컨테이너 안에서 생성된 데이터는 바로 외부 DB(RDS, S3)로 보내지는 거 아니야?”
상황에 따라 다르다.
상황 A: Docker Volume이 필요 없는 경우
스프링 부트에 “회원가입을 하면 AWS RDS(MySQL)에 저장해라”, “이미지를 업로드하면 AWS S3에 저장해라”라고 명시적으로 코딩해두었다면?
⇒ 맞다. 컨테이너 안에서 데이터가 머물렀다가 바로 외부의 RDS, S3로 날아가기 때문에, 곧이 스프링 부트 컨테이너에 Docker Volume을 연결할 필요가 없다.
상황 B: Docker Volume이 반드시 필요한 경우
“서비스를 배포하려면 백엔드 서버와 데이터베이스를 둘 다 배포를 해야하잖아. 이때 도커를 사용한다면, 그냥 하나의 EC2 내부에 도커 컨테이너 두 개를 동작시켜서 하나는 서버, 다른 하나는 DB 이렇게 올리면 되는 거야? 자세히 알려줘.”
맞다. 1대의 EC2 서버 안에 도커를 설치하고, 서버용 컨테이너 1개와 DB용 컨테이너 1개를 동시에 띄워서 서로 통신하게 만드는 것이 가능하다.
docker run 하려면 귀찮기에, Docker Compose를 사용한다. docker-compose.yml이라는 문서에 “서버랑 DB 두 개 동시에 띄워주고, 둘이 통신하게 연결해줘” 라고 적어두면 된다.실무에서는