일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발자
- 디자인패턴
- dart
- column
- 도커
- 명령어
- command
- 플러터
- 위젯
- 파이썬
- linux
- 한빛미디어
- python
- 책
- 다트
- 수학 애니메이션
- 가상환경
- 프로그래밍
- 개발자도서
- 유데미 러닝크루
- 개발
- 유데미
- flutter
- docker
- 코딩
- manim
- Code Generation
- vscode
- 리눅스
- 도서
- Today
- Total
승상의 코딩 블로그
도커(Docker)란 무엇인가? 본문
도커.. 도커.. 많은 사람들이 말하는 도커에 대해서 알아보고자 한다.
도커(Docker)는 애플리케이션을 컨테이너화하여 개발, 배포, 실행을 간소화하는 플랫폼이다. 컨테이너는 운영체제(OS) 수준에서 격리된 환경을 제공하며, 이를 통해 애플리케이션을 일관된 방식으로 실행할 수 있다.
💡 컨테이너(Container)란?
컨테이너는 애플리케이션과 그에 필요한 모든 라이브러리 및 설정을 포함하는 독립적인 실행 환경이다. 컨테이너를 사용하면 애플리케이션을 환경에 관계없이 일관되게 실행할 수 있다.
프론트는 react, 백엔드는 fastapi, 데이터베이스는 postgreSQL 를 쓰는 홈페이지를 만든다고 하자.
react 는 node, fastapi 는 파이썬, postgres 는 PostgreSQL 를 구성해야한다.
나 혼자가 개발하는게 아니라면 내 팀원들이 동일한 버전을 매번 유지하고 있다고 어떻게 확신할 수 있을까?
다양한 어플리케이션이 동작하는 PC 에서 같이 배포해야할 때, 기존 어플리케이션 환경과 어떻게 충돌나지 않게 할 수 있을까?
도커를 쓰면 가능하다!
어떻게 이런 효과를 얻을 수 있는 것일까?
좌측이 도커(Docer)이고 오른쪽에 가상머신(Virtual Machine, VM)의 배포구조이다.
도커는 Host OS 를 공유하며, 독립적인 환경을 가진다.
그래서 추가적인 Guest OS 가 필요 없으므로 가볍고 빠르고 리소스를 효율적으로 사용할 수 있다.
가상 머신은 하이퍼바이저(한대의 컴퓨터에 여러 OS 를 올리게 도와주는 소프트웨어) 위에서 각 환경마다 Guest OS 를 가진다.
그래서 각 가상머신마다 Guest OS 가 필요하므로 무겁고 느리고 리소스 낭비가 발생한다.
그렇다고 도커가 가상머신보다 무조건 좋다는 것이 아니다.
가상머신을 사용하면 윈도우에서 Linux 를 실행할 수 있고, 높은 격리성으로 인해 보안성과 신뢰성이 높다.
도커는 어떻게 내 PC 에서 동작하는 것 일까?
Docker 는 Client-Server Architecture 를 사용한다.
Client (ex. docker cli/api, docker compose) 가 Docker Daemon(dockerd)(백그라운드에서 실행되는 서비스) 이 상호작용하면서 컨테이너를 효율적으로 관리한다.
Client 가 Docker Daemon 으로 명령하면, Docker Daemon 은 도커 이미지, 컨테이너, 네트워크, 볼륨 등을 관리한다.
Registry 는 *Docker image들을 저장하는 저장소로써 대표적으로 전세계 사람들이 이미지를 공유하는 Docker Hub 가 있다. Docker Hub에는 다양한 오픈소스를 쉽게 사용할 수 있도록 만들어 놓은 이미지들이 많다.
💡 이미지란?
이미지는 컨테이너를 실행하기 위한 읽기 전용 템플릿이다. 예를 들어, Nginx 웹 서버를 실행하려면 Nginx 이미지를 사용할 수 있다. Dockerfile 을 만들면 이미지를 만들 수 있다.
예시.
사용자가 컨테이너를 만든다고 하자.
사용자는 docker cli 로 명령을 보낸다. 명령은 docker daemon 이 받는다. docker daemon 은 만들고자 하는 컨테이너의 이미지를 로컬에서 찾는다. 로컬에 관련 이미지가 있다면 그 이미지를 기반으로 컨테이너를 만든다. 로컬에 관련 이미지가 없다면 registry(default 는 docker hub) 에서 관련 이미지를 다운받아 컨테이너를 만든다.
'Docker(도커)' 카테고리의 다른 글
도커 이미지 옮기기 (save, load) (0) | 2025.03.17 |
---|---|
[도커 이미지 추천] NocoDb - Airtable 같은 노코드 기반 데이터베이스 (0) | 2025.03.17 |
[도커 이미지 추천] N8N - Make 같은 자동화 도구 (0) | 2025.03.16 |
[도커 이미지 추천] minio - S3 같은 고성능 객체 스토리지 (0) | 2025.03.16 |
Mac에 도커 설치하기 (0) | 2025.03.16 |