Docker&Container

Docker&Container - 시작하기 & 설치 & 이미지와 컨테이너 개념

hminor 2024. 11. 28. 00:34
반응형

Docker란?

  • 쉽게 생각하자면 밀키트라고 생각할 수 있음.
  • 도커 이전에는 VM(Virtual Machine)을 사용함
    • 다만 기존 OS 위에
    • 새로운 OS를 추가로 설치했기에 무거워지는 단점이 있었음
  • 그래서 도커가 사용됨
  • 도커란?
    • OS, 개발용 SDK, 라이브러리, 필요한 프로그램, 코드가 담긴 밀키트이자, 해당 밀키트를 실행해주는 툴
    • 리눅스 자체의 가벼운 가상화 기술이 있었는데, 이를 활용하면 컨테이너를 만들 수 있었음(가상 컴퓨터)
      • 이것을 더욱 간편하게 사용할 수 있도록 하는 것이 도커.
  • 컨테이너란?
    • 이러한 도커(밀키트)를 실행하는 가상의 컴퓨터
    • 단점
      • 데이터를 영구적으로 보관, 관리할 때는 별로 (데이터 휘발성이 강하기에)
  • 그래서 도커를 만들어서 서버로 보내면 배포를 할 수 있음.
  • 이를 활용해서
    • 기존에는 다양한 서버의 기능을 하나의 프로그램에 담았다면
    • 지금은 여러 프로그램으로 구분해서 관리하는 MSA가 대세.
    • 그리고 CI/CD가 너무 간단해짐.
  • 다만 도커를 배우게 되면, 추후에 응용할 수 없기에 구현하는 방법에 대해 배울 예정.

설치

  • Docker Desktop 설치
    • 설치 시 아래 요소 함께 설치됨
    • 기본 엔진
    • compose
    • CLI
    • hub 연동 등
  • 다만 원래 윈도는 도커를 사용할 수 없음
    • 이유는 리눅스 OS 기반 기술이기에
    • WSL2를 설치해서 윈도우에서 리눅스 OS 가상으로 구동해야 하지만
    • Docker Desktop을 설치하면 사용할 수 있음
  • 설치가 끝났다면 포인트 앤 클릭으로 간단하게 도커를 사용할 수 있음
  • 다만 별도의 기능이 빠져있기에, 추후에 터미널을 활용하여 추가할 순 있지만
  • 우선은 Docker Desktop으로 먼저 간단히 익히고 할 예정
  • 가장 중요한 것은 Images이기에 먼저 사용해보기
    • 우선 Images는 밀키트라고 생각하면 되고
    • OS 부터 라이브러리 등 포함되어 있는 것
    • 즉, 프로그램 실행에 필요한 모든 것이 포함되어 있는 것
    • 그래서 Image만 만들어 두면, 다른 컴퓨터에서 별도의 셋팅 필요없이 사용이 편리
  • 기존에 웹서버 소스코드를 실행하고자 배포 한다면
    • AWS에서 가상 컴퓨터를 빌려서
    • 코드를 옮기고 이것 저것 필요한 것 설치 후 실행해야 하기에 오래 걸림
  • 하지만 도커를 사용한다면
    • 현재 나의 OS, 환경 설정, 라이브러리, 소스 코드 등 image로 담아서
    • 서버 컴퓨터에 보내고 실행하면, 같은 환경에서 사용할 수 있기에
    • 협업 환경에서 완전히 동일한 환경에서 테스트 할 수 있음
  • 우선 현재 만들어 둔 image가 없기에 Search 창에서 검색하여
    • Docker hub에 전체공개된 이미지를 다운해서 사용해보기
    • 우선 간단히 hello world를 다운 받아서
    • 터미널에서 아래의 코드를 입력 후 현재 위치에 다운된 도커 확인해보기
    docker image ls
  • 이후 다운된 image를 실행하게 되면 Containers 탭으로 이동 후 실행됨
    • 우선 Container란 image를 실행 중인 가상의 컴퓨터로
    • 간단히 예시를 들자면, 밀키트(image)를 요리한 요리라고 볼 수 있다.
  • 만약 터미널에서 실행하고 싶다면 아래와 같이 작성하면 됨
# docker run image이름:tag 
docker run hello-world:latest
  • 이제 좀 더 다이나믹한 서버를 실행해보고자
    • dockercloud/hello world 를 설치 후 실행해 볼 텐데
    • 여기서 option setting에서 port를 8080으로 입력 후 실행해보기
      • 의미는 내컴퓨터의 8080포트로 들어가면
      • 해당 컨테이너의 80번 포트로 보내달라는 의미
      • 좀 더 자세한 내용은 다음에 할 예정
    • 실행이 되었다면 웹 브라우저에 localhost:8080을 입력 후 접속한다면
      • 실행이 되는 것을 확인할 수 있음 (싱기방기)
  • 새롭게 정리
    • 뭔가 이해가 확실히 안되어서 찾아보니
    • 도커란
      • 애플리케이션을 컨테이너라는 환경에서 실행할 수 있도록 관리하는 컨테이너 플랫폼.
      • 즉, 도커는 컨테이너를 만들고, 실행하고, 관리하기 위한 도구와 생태계를 제공.
    • 컨테이너
      • 애플리케이션과 실행 환경(라이브러리, 종속성 등)을 독립적으로 패키징한 가벼운 가상화된 실행 환경
      • 애플리케이션의 실행 환경을 격리한 것이며, 실제로는 호스트 OS의 커널을 공유.
        • 따라서 전통적인 가상 머신(VM)처럼 완전한 별도의 OS가 실행되는 것이 아닌, 필요한 부분만 독립적으로 실행.
  • 요약
    • 도커는 컨테이너를 만들고 관리하는 도구.
    • 컨테이너는 애플리케이션이 실행되는 가상화된 환경.
    • 컨테이너는 가상 머신과 비슷해 보이지만, 훨씬 가볍고 빠름. 가상 머신은 완전한 OS를 포함하지만, 컨테이너는 애플리케이션 실행에 필요한 부분만 격리합니다.
# docker run image이름:tag 
docker run hello-world:latest