본문 바로가기

Backend/Docker

[Docker] Docker 개요, 동작 방식, MySQL 연결

728x90
Docker를 이용하면 쉽게 배포할 수 있고
이점이 많다고 하여 Docker에 대한 기본 개념을 공부한 기록이다.

개요

우리가 만든 어플리케이션은 서버와 데이터베이스를 필요로 한다.

이 서버와 데이터베이스는 동작되는 운영체제가 다를 수 있다.

 

Docker를 이용하면, 이 서버와 데이터베이스를 각각의 독립적인 실행환경(Container)에서 동작할 수 있게 해준다.

그렇다면 독립적인 실행환경에서의 운영체제는 어떻게 마련할까?

 

Docker의 이미지라는 개념이 여기서 등장한다.

이미지를 이용하면, 동작하고 싶은 서버, 데이터베이스 등의 실행환경을 제공받을 수 있다.

 

서버나 데이터베이스를 실행하는 컨테이너에서

공통되는 실행환경을 가진다면 다운로드하였던 이미지를 재사용하면 된다.

 

이렇게 컨테이너와 이미지를 통해 우리는 하나의 host로 여러 환경에서의 서비스를 제공받을 수 있다.

 

공식문서에서 자세한 설명을 볼 수 있다.

 

Overview

 

docs.docker.com

동작 방식

그렇다면 도커는 어떤 식으로 동작할까?

기존의 네트워크 동작 방식과 비교해 보자.

기존의 네트워크 동작 방식

출처 : https://www.youtube.com/watch?v=SJFO2w5Q2HI&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=5

웹 서버는 라우트를 지정하고, 해당 라우트에 대한 데이터를 지정한다.

외부에서 80번 포트로 들어왔을 때 동작하도록 설정되어 있다.

 

그리고 웹서버가 설치된 컴퓨터의 주소를 example.com이라고 하자.

웹브라우저가 위와 같이 같은 주소와 80번 포트로 접속하게 되면

웹서버는 해당 라우트에 지정된 데이터를 전달한다.

 

도커 네트워크 동작 방식

출처 : https://www.youtube.com/watch?v=SJFO2w5Q2HI&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=5

도커는 도커의 host를 가지고 있다.

때문에 host도 별개의 포트를 가지므로 기존 네트워크 방식대로면 통신할 수 없다.

 

위와 같이 웹서버의 컨테이너 포트와 도커 host 포트를 연결해줘야 한다.

이렇게 연결된 포트로 신호를 전달하는 것을 포트 포워딩이라고 한다.

 

다른 동작 과정은 이전과 같다.

 

추가적인 설명은 이고잉 님의 도커 강의에 자세하게 나와있어 참고하면 좋을 것 같다.


Docker 사용(MySQL 연결)

이제 직접 도커를 사용해 MySQL 컨테이너를 만들어보자.

먼저 MySQL 이미지를 받아야 한다.

이미지는 pull 명령어를 이용해 설치한다.

$docker pull mysql

위의 명령어를 입력해 주면

위와 같이 이미지가 잘 설치된 것을 볼 수 있다.

 

이제 컨테이너를 생성하고 실행해 보자.

컨테이너는 run 명령어를 이용한다.

$docker run --name test-container -e MYSQL_ROOT_PASSWORD=[설정한 비밀번호] -d -p 3306:3306 mysql

위의 명령어를 입력해 주면,

정상적으로 도커 컨테이너를 실행시킨 것을 볼 수 있다.


참고

 

Docker Documentation

 

docs.docker.com

마치며

도커의 편리함에 대해서는 배포까지 해봐야 체감할 수 있을 것 같다.

 

잘못된 정보에 대한 피드백은 환영입니다.

감사합니다.

728x90