본 포스팅은 참고자료에 명시된 강의 내용을 개인 기록 목적으로 요약 참고하여 작성하였습니다. 더 자세한 내용은 강의를 구매해 보시는 걸 권장드립니다.
🥅 들어가며
정산 관련 개인 프로젝트에 도입하기 전 Docker 기반 개발 환경 구축 및 CI/CD 파이프 라인을 구축하는 사전 작업이 필요했다. 팀 프로젝트 때 Docker 기반 CI/CD 파이프라인를 구축했으나 그 작업은 내가 하진 않았었다. 이후 코드 리뷰를 통해 아하 대략적으로 이렇게 돌아가는 거구나 인지를 하고 있었지만 이후 Docker를 직접 써볼 일이 없었다. 이번에 차근차근 배워가며 최종적으로 Docker 를 기반으로 프로젝트의 CI/CD 파이프 라인까지 구축해보도록 하겠다.
🐋 Docker란 무엇이고 왜 쓸까?
공식문서에서는 Docker를 다음과 같이 정의하고 있다.
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 오픈 소스 플랫폼이다. Docker 는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하여, 개발에서 운영까지 일관된 환경을 제공한다.
Docker 입문자들에게는 한번에는 이해하기 어려운 정의이다.(나만 그런가..ㅎㅎ) 쉽게 이해해 보겠다. Docker는 사실 고래(실은 화물선) 이 여러개의 화물 컨테이너를 실어 나르는 공식 로고에서 그 사용 용도를 쉽게 이해할 수 있다.
📦 Docker Container
화물 컨테이너는 어떤 용도로 사용될까? 보통 대용량의 화물들을 묶어서 한 번에 옮길 때 사용된다. 컨테이너는 화물선에 실린 이후 기중기같은 걸 통해 다른 배로 옮겨 질 수 있다. 이러한 특성은 Docker에도 그대로 적용된다. 그림으로 살펴보자.
여러 화물이 묶여서 컨테이너에서 실려있는 것처럼 Docker Container에도 여러 개발 소프트웨어들이 패키징되어 실려 있다. 이러한 컨테이너는 기중기를 이용해서 화물 컨테이너를 자유롭게 다른 배에 옮길 수 있듯이 다른 인프라 환경으로 그 이동이 자유롭다. 정리하면 여러 소프트웨어를 컨테이너로 패키징하여 어떤 인프라 환경에서든지 똑같이 실행되게끔 도와주는 것이 Docker인 것이다.
🤔 Docker 사용 이유
Docker의 사용 이유는 앞서 거의 다 설명하였다. MySQL을 내 컴퓨터에 설치한다고 하자. 그런데 다른 컴퓨터에서 잘 설치되던 MySQL이 내 컴퓨터에는 에러가 뜨면 설치되지 않는 경우가 있다. 이 이유에는 버전의 차이,다른 프로그램과의 충돌,OS와의 호환성 문제 등이 있을 것이다. Docker를 사용한다면 이러한 문제들을 해결할 수 있다. 미리 패키징된 컨테이너를 Docker를 통해 실행하면 언제나 일관된 환경에서 MySQL을 안정적으로 실행할 수 있다. 소프트웨어를 매 번 새로 설치할 필요도 없어진다.
📦 Container의 독립성
Docker Container 각각은 독립적인 컴퓨터 환경이다. 당연한 개념이다.(화물 컨테이너가 서로 섞일 일은 부서지지 않는 한 없지 않은가..ㅎㅎ) 뒤에 설명할 Docker-compose 을 적용하지 않는 한 Container는 다음과 같은 요소들이 독립적으로 존재한다.
디스크(저장공간) : 각 Cotainer들은 독립된 저장 공간을 가진다. 일반적으로는 특정 컨테이너 내부에서 다른 컨테이너 내부에 있는 파일에 접근할 수 없다.
네트워크(IP,Port) : 각 Container들은 고유의 Ip 및 Port 를 가지고 있다.
🖼️ Docker Image
Docker에서 알아둬야 할 또 다른 기본 개념인 Image에 대한 공식 문서 설명은 다음과 같다.
Docker Image는 Container를 생성하는 데 사용되며, 애플리케이션과 그 실행에 필요한 모든 것을 포함하고 있다.
Docker Image는 게임 칩이나 소프트웨어가 설치되어 있는 usb 이라 할 수 있다. 게임 칩이나 소프트웨어 usb를 꽂는 순간 우리는 게임이나 소프트웨어를 실행할 수 있다. Docker에서도 어떤 소프트웨어를 이미지로 만들었다면 이를 Docker로 실행시키면 Container 환경에서 소프트웨어가 실행된다.
Image는 정리하면 프로그램을 실행하는 데 필요한 설치 과정,설정,버전 정보 즉 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.
⚙️ Docker Desktop 설치
Docker Desktop은 개발자가 Docker 기반 애플리케이션을 로컬에서 쉽게 개발, 테스트 및 배포할 수 있도록 지원하는 통합 도구이다. 참고자료 링크에 잘 설명되어 있어서 따라서 설치했다.(Window 기준)
설치 파일 다운로드
https://docs.docker.com/desktop/install/windows-install(선택사항) Window 10 버전 이상 및 WSL 2 기반의 설치 환경이므로 시스템 요구 사항에 맞게 업데이트한다.(참고자료 링크)
PowerShell을 열고 WSL2를 기본 버전으로 설정
설치파일 실행해서 Docker Desktop 설치 및 실행 시키는 데로 따라서 정상적으로 설치하고 실행하면 다음과 같이 왼쪽 하단에 Engine Running이 되고 있음을 확인 할 수 있다.
Docker CLI 실행 확인 명령 프롬프트를 실행하고 Docker CLI 명령어가 동작하는지 확인한다.
다른 CLI 명령어는 이후 차차 배워보도록 하겠다. 여기까지 Docker의 개념 및 설치에 대해서 알아보았다. 다음부터는 Docker 을 실행해보며 어떻게 내부적으로 돌아가는 것인지 알아보도록 하겠다.