Record
도커란? (2) 본문
이미 이전에 도커관련해서 글을 올린적이 있었는데,, 그때는 약간 이게뭐지? 싶어서 찾아봤던 것이고 지금은 학원에서 제대로 배우고 있기 때문에 정리를 좀 해서 올리려고 한다.

Docker는 애플리케이션을 개발, 배포, 실행하기 위한 오픈 플랫폼입니다. Docker를 사용하면 애플리케이션을 인프라¹로부터 분리할 수 있어 소프트웨어를 더 빠르게 전달할 수 있습니다. (또한 애플리케이션을 관리하는 방식과 동일한 방법으로 인프라도 관리할 수 있습니다. ) Docker의 코드 배포, 테스트, 배포 방법론을 활용하면, 코드를 작성하고 실제 운영 환경에서 실행하기까지 걸리는 시간을 크게 줄일 수 있습니다.

많이 봤을 그림이다. 이 아키텍처를 hypervisor나 vm으로 안할때는 이해를 못했는데 vm도 배우고 hypervisor도 배우고 하다보니 이제야 좀 이해가 간다.
기존의 hypervisor는 위에 새로운 os를 올리고 각 os를 속여서 각 자원이 독립적으로 사용할 수 있게 가상화를 가능하게 한다. 이때 속이는? 가상화를 시키는 주체는 하드웨어이다. cpu한와 ram과 같은 자원을 사용할 수 있다고 속이고? 커널부터 모든 걸 새로 깔아서 독립된 환경을 구축해서 사용한다.

반면 docker의 경우 Cent든 ubutu든 커널단에서 같은 Linux를 사용하면 이걸 가져와서 어플리케이션만 격리시켜 가상화 한다. 그렇게 되면 커널안의 네임스페이스만 정의해줘서 격리시키면 vm과 같이 가상화가 되면서 OS를 새로 만들어서 할당시켜주지 않는 가벼운 상태로 이용할 수 있다. 이렇게 되면 장점이 더있는데 일단 자원을 속여서 할당하는 것이 아니라 공유하게 되기 때문에 vm처럼 자원이 점유되있지 않아도 된다. ( 더 가용성있게 쓰기 가능)
그리고 이렇게 네임스페이스에 뭐가 들어있는지를 정의해주기 위해서 image라는 것을 사용한다. image에 네임스페이스에 들어갈 것을 정의해주는 것이다. 그 후에 이러한 이미지로 가상화를 하면 독립된 환경의 application이 나오고 그러한 가상화의 단위를 컨테이너라고 한다.
사실 컨테이너라는것은 만든다? 라기보다는 하나의 단위로 이미지가 실행될때 올라가는 독립된 공간을 컨테이너라고 불리는 것이다.

정리하자면
장점
- 압도적인 효율성: OS 커널을 공유하므로 메모리 낭비가 거의 없고, 한 서버에 수백 개의 컨테이너를 띄울 수 있다.
- 이식성 (Portability): 이미지 안에 모든 환경을 담았기에 어디서든 똑같이 돌아간다.
- 빠른 확장성: 필요할 때 즉시(수 초 내) 컨테이너를 늘리거나 줄일 수 있어 트래픽 대응에 유리하다.
- 가용성: 자원을 미리 꽉 잡고 있지 않아서, 남는 자원을 다른 컨테이너가 유연하게 나눠 쓸 수 있다.
단점 (한계점)
- 보안 취약성: 커널을 공유하기 때문에, 만약 커널 자체에 보안 구멍이 뚫리면 모든 컨테이너가 위험해질 수 있다. (VM보다 벽이 얇음)
- OS 종속성: 기본적으로 리눅스 커널을 공유하므로, 리눅스 호스트에서 윈도우 전용 앱을 직접 돌릴 수는 없다. (역으로도 마찬가지)
- 성능 간섭: 한 컨테이너가 커널 자원을 과하게 소모하면(System Call 폭주 등), 다른 컨테이너 성능에 영향을 줄 수 있다.
'CS > 클라우드' 카테고리의 다른 글
| [K8s] 쿠버네티스 설치 (0) | 2026.02.25 |
|---|---|
| [K8s] 쿠버네티스란 ? (0) | 2026.02.24 |
| Ansible이란? (1) | 2026.02.06 |
| Hypervisor , ESXI (0) | 2026.02.04 |
| 가상화란(Hypervisor)? (0) | 2026.02.04 |