- 유튜브 생활코딩에서 Docker강의로 나왔던 예제를 실습을 해보았다.
예제를 따라 하면서 docker에 대한 큰 틀을 이해할 수 있었고 어떻게 작동이 되는지 이해가 가는 시간이 되었다.
1. 생활 코딩 Git Hub에 있는 예제를 Clone을 한다.
파일의 구성을 보면 크게 4가지로 되어있다. backend , frontend , database , docker-compose.yml로 되어 있는 실습 예제이다. 처음부터 차근차근해보면
Docker는 컨테이너 기반 오픈소스 가상화 플랫폼이다. 프로그램이 정상적으로 작동하기 위해 기술 툴(이미지)를 컨테이너에 담아 그 컨테이너를 실행시켜 새로운 환경에서도 쉽고 빠르게 프로그램을 작동할 수 있게 도아주는 기술이다.
Docker를 처음 시작할때는 이미지를 만들어야 하는데 이미지를 만드는 것이 Dockerfile이다. Dockerfile을 만들어서 이미지를 만들어 줄 것이다.
그래서 우리가 해야할 것은 backend , frontend , database의 폴더에 각각 Dokcerfile이 있을 것이다. 이것을 다 이미지를 만들어줄 것이다.
1. Frontend
무조건 Dockerfile을 실행시키려면 경로를 Dockerfile이 있는 경로까지 들어가야한다.
ls 명령어로 도커 파일이 있는 것을 확인 한 후 Dockerfile을 이미지로 만드는 명령어를 써 이미지를 생성한다.
그리고 컨테이너를 생성하고 바로 실행하게 만들어 주는 명령어 run을 써서 컨테이너를 생성한다.
Docker Desktop을 보면 루히사 만든 컨테이너가 실행이 되고 있는 것을 알 수 있다. 여기서 8080:8080 링크를 클릭하면 홈페이지 창이 뜬다.
Dockerfile을 이용해 이미지를 만들어 html을 로컬 서버 8080 포트에 연결을 시켰다.
이러한 방식으로 back의 Dockerfile과 database의 Dockerfile을 이용하여 이미지, 컨테이너를 생성하면 된다.
그러면 backend는
database는
리턴값이나 html문서가 없어서 이런 식으로 나온다. 여기서 우리는 생각을 해야 한다. 따로따로 쓰면 무의미한 컨테이너들이다. 하나의 시스템이 돼야 하는데 따로 노는 것은 서비스하기가 힘들 것이다. 그래서 Docker는 여러 개의 컨테이너들을 묶어서 마치 하나의 컨테이너처럼 작동할 수 있게 하는 기능이 있다. 그 기능이 Docker-compose이다.
compose를 쓰는 방법은
1. yml 파일로 작성을 하는 것이다.
파일 작성하는 것은 https://devzzi.tistory.com/76
참고를 하면 될 것이다.
[Docker] Docker Compose의 개념, 사용법, 명령어 정리
[Docker] Docker Compose의 개념, 사용법, 명령어 정리 📍 도커 컴포즈란? 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일, Compose File)에 기재해 명령어 한번에 시스템 전체를 실행하고
devzzi.tistory.com
compose 터미널에 들어가서 yml파일 있는 경로에 docker-compose up을 실행시키면 된다.
끝나는 순간 Docker Desktop에선 나도 모르는 순간에
컨테이너 리스트에 겹겹이 쌓여 있는 아이콘을 볼 수 있다. 그것을 펼치면 3개의 컨테이너들이 한 컨테이너에 담겨 있는 것을 볼수 있다. 그것을 실행을 시키면 어떻게 될까. 우리는 보이는 파일이 front폴더 안에 있는 html 파일이기 때문에 8080:8080 포트에 들어가 보면
처음에는 데이터가 없고 backend와 연결돼있지 않다고 나왔는데 지금은 백앤드와 데이터 베이스가 연결이 되어 프런트에 반영이 됐다. 여기서 추가로 작성을 하면
Kim이 새로 저장이 되는 것을 볼 수 있다.
- 실습 후 -
이렇게 해서 실습을 마쳤다. 실습하기 전 에는 도커가 잘 이해가 안 됐었다. 그 이유는 실습을 안 해보고 이미지생성, 컨테이너생성하는 게 다였다. 그 이후 이 컨테이너들이 어떻게 활용되는지는 아무리 구글링해도 이해가 안 됐었다. 마침 유튜브에서 실습 강의를 해주는 걸 보아서 직접 실습을 하면서 연습을 하니 도커의 큰 틀을 알 수 있었다. 큰 틀은 이해가 됐으니 이제 더 깊숙이 들어가 공부를 해야겠다.
'docker' 카테고리의 다른 글
[ Docker ] WSL2보다 더 간단하게 구축하는 멀티패스 docker 개발환경 (0) | 2023.05.30 |
---|---|
[Docker] Docker 이미지 명령어 (0) | 2023.05.19 |
[Docker] Docker 컨테이너 명령어 (0) | 2023.05.19 |
[Dorker] Dockerfile 작성하는 법 (0) | 2023.05.18 |
[Docker] Docker 실행순서 , dockerfile을 이용해 image 빌드하기 (1) | 2023.05.17 |