ABOUT ME

9911dbfl@naver.com

Today
Yesterday
Total
  • [CI/CD] Docker / 컨테이너(Container) / 이미지(Image)
    CICD 2025. 4. 2. 21:53


     

     

    Docker를 쓰는 이유?

    • "이식성" 때문에 사용한다.
    📕 이식성이란? 
    특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성

     

     

    Docker 사용시 장점?

    • 매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.
    • 항상 일관되게 프로그램을 설치할 수 있다. (버전, 환경 설정, 옵션, 운영 체제 등)
    • 각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다.

     

     


     

     

    IP와 Port의 개념

    • IP : 네트워크 상에서의 특정 컴퓨터를 가리키는 주소 (ex) 13.250.15.132 )
    • Port : 한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소 ( ex) 13.250.15.132:3000 에서 :3000 부분이 포트 번호를 의미)

     

     

    ➕ 브라우저 창에 포트 번호를 입력하지 않는 이유?

    • 주소창에 도메인 주소를 입력해서 엔터를 누르면, 브라우저(크롬, 익스플로러 등)는 기본적으로 80번 포트로 통신을 보내게 설정되어 있다. 그래서 포트 번호를 입력해주지 않아도 통신이 잘 됐던 것이었다.

     

     

    ➕ 잘 알려진 포트(well-known port)란 ?

    • 포트 번호는 0 ~ 65,535번까지 사용할 수 있다. 그 중에서 0 ~ 1023번까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다. 이렇게 규약을 통해 역할이 정해져있는 포트 번호를 보고 잘 알려진 포트(well-known port)라고 부른다.
    • 규약으로 정해져 있는 포트 번호 중 자주 사용되는 포트 번호는 아래와 같다.
    · 22번 (SSH, Secure Shell Protocol) : 원격 접속을 위한 포트 번호
        - EC2 인스턴스에 연결할 때 22번 포트를 사용한다.
    · 80번 (HTTP) : HTTP로 통신을 할 때 사용
    · 443번 (HTTPS) : HTTPS로 통신을 할 때 사용

     

    여기서 착각하면 안 되는 점은 위에서 정해놓은 규약을 꼭 지키지 않아도 된다. 즉, 규약으로 정해져 있는 포트 번호와 다르게 사용해도 된다는 뜻이다. 예를 들어, 특정 서버와 HTTP 통신을 할 때 80번 포트를 쓰지 않고 3000번 포트나 8080번 포트를 써도 상관 없다.

     

     


     

     

     Docker 란?

    • 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴

     

     

     컨테이너(Container)란?

    • 윈도우 환경을 사용해보면 하나의 컴퓨터에 여러 사용자로 나눠서 사용할 수 있게끔 구성되어있는 것처럼,

     

     

     

    컨테이너도 이와 비슷한 개념이다. 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다. 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구성할 수 있는 형태이다. 여기서 얘기하는 미니 컴퓨터를 보고 Docker에서는 컨테이너(Container)라고 부른다.

     

    여기서 ‘컨테이너’와 ‘컨테이너를 포함하고 있는 컴퓨터’를 구분하기 위해 컨테이너를 포함하고 있는 컴퓨터를 ‘호스트(host) 컴퓨터’라고 부른다.

     

     

     

     컨테이너(Container)의 독립성

     

    컨테이너는 ‘독립적인 컴퓨터 환경’ 이다. 

    • 디스크 (저장 공간) : 각 컨테이너마다 서로 각자의 저장 공간을 가지고 있다. 일반적으로 A 컨테이너 내부에서 B 컨테이너 내부에 있는 파일에 접근할 수 없다.
    • 네트워크 (IP, Port) : 각 컨테이너마다 고유의 네트워크를 가지고 있다. 컨테이너는 각자의 IP 주소를 가지고 있다.

     

     

     

    이미지(Image)란?

    • Docker에서는 닌텐도의 칩과 같은 역할을 하는 개념이 이미지(Image)이다.
    Node.js 기반의 Express.js 서버 프로젝트를 이미지로 만들었다고 가정해보자. 이 이미지를 Docker로 실행시키면 Express.js 서버 프로젝트가 컨테이너(Container) 환경에서 실행된다. 복잡한 설치 과정을 거칠 필요 없이 손쉽게 실행된다. 
    
    또 다른 예로, MySQL 서버를 이미지로 만들었다면, 이 이미지를 Docker로 실행시키는 순간 MySQL 서버가 컨테이너(Container) 환경에서 실행된다. MySQL을 일일이 설치할 필요없이 MySQL 데이터베이스를 사용할 수 있게 된다.
    • 이미지(Image)프로그램을 실행하는 데 필요한 설치 과정, 설정, 버전 정보 등을 포함하고 있다. 즉, 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.

     

     

     

    'CICD' 카테고리의 다른 글

    쿠버네티스 용어 정리  (0) 2024.06.14
    레지스트리 서버 만들기  (0) 2024.06.13
    테크톤  (0) 2024.06.12
    pod, deploment, replicaset  (0) 2024.06.11
    pod, application container  (0) 2024.06.11
Designed by Tistory.