-
[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