Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 도커
- 신한스퀘어브릿지해커톤
- iaas
- c++역사
- 해커톤
- docker
- Stateless
- 명품C++
- 신한금융희망재단
- 신한해커톤
- 쉽게 배우는 자바 프로그래밍
- 컨테이너
- 도커개념정리
- payasyougo
- 네트워크
- stateful
- Cookie
- 클라우드컴퓨팅
- it
- On-demand
- 도커컨테이너
- 도커이미지
- SaaS
- SESSION
- 1장
- c++개요
- c언어c++차이
- CSV란?
- PaaS
- 용어정리
Archives
- Today
- Total
수리 공작소
Docker 개념 정리 본문
※ 이 글은 [그림과 실습으로 배우는 도커 & 쿠버네티스] 책을 요약 정리하였습니다.
Docker 란?
- 데이터 또는 프로그램을 격리시키는 기능을 하는 소프트웨어
- 주로 서버에서 사용
- 마치 여러 물건으로 어지러진 방을 조립형 창고 같은 것을 이용하여 분리하여 정리한 것
- 이 조립형 창고 역할을 하는 것을 컨테이너라고 지칭
Docker Engine 이란?
- Docker의 본체, 즉, 도커가 제공하는 기능의 가장 핵심적인 부분을 Docker engine (도커 엔진)이라고 함
- 이는 컨테이너를 생성하고 구동시킴
Docker Image 란?
- 컨테이너를 만들기 위해 필요함 (틀과 같은 역할)
- 보통 운영체제(커널 제외한 부분) + 필요 소프트웨어를 포함
- DockerHub 사이트에서 필요한 이미지를 다운 받을 수 있음 (주로 공식 이미지를 사용하는 것이 좋음)
- 만일 필요한 파일만을 직접 넣고 초경량 이미지를 만들고 싶다면, 운영체제(커널 제외 부분)마저 포함하지 않은 빈 이미지인 docker scratch를 직접 커스텀 할 수 있다고 하지만 추천하지 않는다고 함
Docker를 사용하려면 호스트 컴퓨터도 리눅스 환경 필수
- 왜? 도커가 리눅스 기반이고, 도커 컨테이너에는 운영체제의 일부 (커널을 제외한 부분)를 포함하고 있어서 이와 호환이 될 수 있는 운영체제의 커널 부분이 필요함. 즉, 둘 다 리눅스로 맞추어져야 함.
- 이미 리눅스 환경을 포함하고 있는 Docker Desktop을 사용하거나, 윈도우에서 도커를 사용하려면 WSL, 맥에서 도커를 사용하려면 VMWare로 리눅스 환경 세팅 필요
도커 사용 이점인 프로그램 및 데이터 격리, 왜 필요?
- 대부분의 프로그램은 단독으로 동작하지 않음 -> 어떠한 실행환경이나 라이브러리가 필요
- 또, 다른 프로그램과 특정한 디렉터리 혹은 설정 정보를 공유하기도 함
- 즉, 이렇게 서로 영향을 주는 사이에서 프로그램 하나를 업데이트와 같이 수정을 하면, 다른 프로그램에 영향을 준다는 의미
- 원래는 한 물리적 서버에는 같은 논리적 서버가 2개 설치될 수 없음
- 하지만 도커를 사용하여 격리 환경을 갖추면 같은 논리적 서버가 2개 이상 설치될 수 있음, 즉, 같은 서버 다른 버전을 여러개 설치할 수 있음
- 위와 같이 격리를 시켜서 각각의 프로그램에 맞는 환경을 따로 조성할 수 있음
- 또 다른 장점으로 이식성이 뛰어남
- 컨테이너를 내보내기 하면 이대로 다른 도커에도 같은 환경을 조성할 수 있음
- 궁극적으로 한 물리적 서버에 여러 논리적 서버를 환경에 맞게 마음껏 조성할 수 있으므로 비용절감! 자원절약!
컨테이너의 리눅스 배포판과 호스트 컴퓨터의 리눅스 배포판이 달라도 상관 없음
- 각각의 배포판의 차이는 유저 스페이스의 각각이 명령체계와 패키지 관리 방식 등을 다르게 구현했을 뿐이지 커널 자체는 같은 것에 뿌리를 두고 있음 -> https://jh-labs.tistory.com/458 참고
도커의 생애주기
- 생성 -> 실행 -> 정지 -> 폐기 -> 생성 -> 실행 -> 정지 -> 폐기 { .... }
- 도커는 빠른 배포와 확장을 고려하여 설계됨
- 여러 컨테이너에 어떤 수정이 필요할 때는 한 컨테이너에서 수정 후 이미지를 만들어 여러개를 동일하게 찍어내는 것이 가능
- 이러한 이점을 잘 활용을 하면, 도커를 지우고 생성하는 과정이 반복됨
- 때문에 도커의 생애주기라는 개념이 존재
- 또, 이러한 특성 때문에 폐기 시점에 저장이 되어야 할 데이터가 마운트 된 곳에 잘 남아있는지, 중요한 데이터를 꼭 확인해야함
도커의 단점? 유의점?
- 리눅스만 지원
- 호스트 컴퓨터에 여러 서버 환경을 조성 -> 호스트 컴퓨터에 의존도가 높다
- 물리적 컴퓨터 혹은 호스트 환경이 망가졌을 대의 대비책을 확실히 둬야 함
updated at 2025.12.08.
도커를 언제 사용하는지?
1. 프로젝트 실행 환경을 통일해야 할 때
도커 이미지 안에 들어갈 수 있는 설정 내용들
- OS (최소한의 Linux)
→ Ubuntu, Alpine, Debian 등 - 필요한 언어 런타임
→ Node, Python, Java, Go 같은 런타임 버전까지 정확히 포함 - 필요한 라이브러리들
→ pip install, npm install 등 설치된 그대로 - 앱 코드 + 설정 파일
- 환경변수, 포트 설정 등 실행 규칙
이런 것을 동일하게 가져갈 수 있다.
2. 내 호스트 OS에 영향 없이 무언가를 설치하고 싶을 때
예를 들어 지금 내 호스트 os의 node 버전과 다른 버전의 node를 사용해보고 싶을 때.
-> 즉, 따로따로 돌리니까 버전 충돌의 걱정이 없다는 것.
3. 여러 서비스를 동시에 구성해야 할 때
- 일단 버전 충돌 문제 줄여주고
- 포트 충돌 문제 없고
- docker compose를 이용하면 여러가지 설정 포함해서 명령어 한번에 모든 서비스 실행 가능
- 또 보안적으로도.,,

도커 클라이언트와 도터 데몬은 API
