avatar
wooni-develog

[Docker] Docker 의 사용 이유 및 Container,Image 에 대해 알아보자(+ 설치)

Docker 의 개념 및 사용 이유에 대해 알아보자(+설치)
DockerDevOps플랫폼
6 months ago
·
9 min read

본 포스팅은 참고자료에 명시된 강의 내용을 개인 기록 목적으로 요약 참고하여 작성하였습니다. 더 자세한 내용은 강의를 구매해 보시는 걸 권장드립니다.

🥅 들어가며

정산 관련 개인 프로젝트에 도입하기 전 Docker 기반 개발 환경 구축 및 CI/CD 파이프 라인을 구축하는 사전 작업이 필요했다. 팀 프로젝트 때 Docker 기반 CI/CD 파이프라인를 구축했으나 그 작업은 내가 하진 않았었다. 이후 코드 리뷰를 통해 아하 대략적으로 이렇게 돌아가는 거구나 인지를 하고 있었지만 이후 Docker를 직접 써볼 일이 없었다. 이번에 차근차근 배워가며 최종적으로 Docker 를 기반으로 프로젝트의 CI/CD 파이프 라인까지 구축해보도록 하겠다.

🐋 Docker란 무엇이고 왜 쓸까?

until-545

공식문서에서는 Docker를 다음과 같이 정의하고 있다.

Docker 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 오픈 소스 플랫폼이다. Docker 는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하여, 개발에서 운영까지 일관된 환경을 제공한다.

Docker 입문자들에게는 한번에는 이해하기 어려운 정의이다.(나만 그런가..ㅎㅎ) 쉽게 이해해 보겠다. Docker는 사실 고래(실은 화물선) 이 여러개의 화물 컨테이너를 실어 나르는 공식 로고에서 그 사용 용도를 쉽게 이해할 수 있다.

📦 Docker Container

화물 컨테이너는 어떤 용도로 사용될까? 보통 대용량의 화물들을 묶어서 한 번에 옮길 때 사용된다. 컨테이너는 화물선에 실린 이후 기중기같은 걸 통해 다른 배로 옮겨 질 수 있다. 이러한 특성은 Docker에도 그대로 적용된다. 그림으로 살펴보자.

until-544

여러 화물이 묶여서 컨테이너에서 실려있는 것처럼 Docker Container에도 여러 개발 소프트웨어들이 패키징되어 실려 있다. 이러한 컨테이너는 기중기를 이용해서 화물 컨테이너를 자유롭게 다른 배에 옮길 수 있듯이 다른 인프라 환경으로 그 이동이 자유롭다. 정리하면 여러 소프트웨어를 컨테이너로 패키징하여 어떤 인프라 환경에서든지 똑같이 실행되게끔 도와주는 것이 Docker인 것이다.

🤔 Docker 사용 이유

Docker의 사용 이유는 앞서 거의 다 설명하였다. MySQL을 내 컴퓨터에 설치한다고 하자. 그런데 다른 컴퓨터에서 잘 설치되던 MySQL이 내 컴퓨터에는 에러가 뜨면 설치되지 않는 경우가 있다. 이 이유에는 버전의 차이,다른 프로그램과의 충돌,OS와의 호환성 문제 등이 있을 것이다. Docker를 사용한다면 이러한 문제들을 해결할 수 있다. 미리 패키징된 컨테이너를 Docker를 통해 실행하면 언제나 일관된 환경에서 MySQL을 안정적으로 실행할 수 있다. 소프트웨어를 매 번 새로 설치할 필요도 없어진다.

📦 Container의 독립성

Docker Container 각각은 독립적인 컴퓨터 환경이다. 당연한 개념이다.(화물 컨테이너가 서로 섞일 일은 부서지지 않는 한 없지 않은가..ㅎㅎ) 뒤에 설명할 Docker-compose 을 적용하지 않는 한 Container는 다음과 같은 요소들이 독립적으로 존재한다.

  • 디스크(저장공간) : 각 Cotainer들은 독립된 저장 공간을 가진다. 일반적으로는 특정 컨테이너 내부에서 다른 컨테이너 내부에 있는 파일에 접근할 수 없다.

  • 네트워크(IP,Port) : 각 Container들은 고유의 IpPort 를 가지고 있다.

🖼️ Docker Image

Docker에서 알아둬야 할 또 다른 기본 개념인 Image에 대한 공식 문서 설명은 다음과 같다.

Docker Image는 Container를 생성하는 데 사용되며, 애플리케이션과 그 실행에 필요한 모든 것을 포함하고 있다.

Docker Image는 게임 칩이나 소프트웨어가 설치되어 있는 usb 이라 할 수 있다. 게임 칩이나 소프트웨어 usb를 꽂는 순간 우리는 게임이나 소프트웨어를 실행할 수 있다. Docker에서도 어떤 소프트웨어를 이미지로 만들었다면 이를 Docker로 실행시키면 Container 환경에서 소프트웨어가 실행된다.

Image는 정리하면 프로그램을 실행하는 데 필요한 설치 과정,설정,버전 정보 즉 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.

⚙️ Docker Desktop 설치

Docker Desktop은 개발자가 Docker 기반 애플리케이션을 로컬에서 쉽게 개발, 테스트 및 배포할 수 있도록 지원하는 통합 도구이다. 참고자료 링크에 잘 설명되어 있어서 따라서 설치했다.(Window 기준)

  1. 설치 파일 다운로드
    https://docs.docker.com/desktop/install/windows-install

    until-546
  2. (선택사항) Window 10 버전 이상 및 WSL 2 기반의 설치 환경이므로 시스템 요구 사항에 맞게 업데이트한다.(참고자료 링크)

  3. PowerShell을 열고 WSL2를 기본 버전으로 설정

    until-547
  4. 설치파일 실행해서 Docker Desktop 설치 및 실행 시키는 데로 따라서 정상적으로 설치하고 실행하면 다음과 같이 왼쪽 하단에 Engine Running이 되고 있음을 확인 할 수 있다.

    until-548
  5. Docker CLI 실행 확인 명령 프롬프트를 실행하고 Docker CLI 명령어가 동작하는지 확인한다.

    until-551

다른 CLI 명령어는 이후 차차 배워보도록 하겠다. 여기까지 Docker의 개념 및 설치에 대해서 알아보았다. 다음부터는 Docker 을 실행해보며 어떻게 내부적으로 돌아가는 것인지 알아보도록 하겠다.

📚 참고자료




















- 컬렉션 아티클






백엔드 개발자 취준생 우니입니다.