개발한 코드를 빌드하고 배포할 때 서버에 운영체제를 설치하고 필요한 라이브러를 다운받아 사용해서 Docker가 왜 필요한지 잘 몰랐습니다.
하지만 Docker를 이번에 새로 배우면서 그 매력에 푹 빠져버렸습니다.
이번 글에서는 Docker를 학습하면서 얻은 지식과 느낀 점에 대해서 공유해보려고 합니다.
Docker의 개념
Docker는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다.
개념만 들었을 때는 가상머신과 무엇이 다른지 의문이 들었습니다.
가상머신 vs 컨테이너
가상머신의 구조를 보면
- 하드웨어 위에 하드바이저가 있습니다.
- 각 가상머신마다 완전한 게스트 OS가 필요합니다.
- OS 위에서 애플리케이션이 실행됩니다.
컨테이너의 구조를 보면
- 하드웨어 위에 호스트 OS가 존재합니다.
- 호스트 OS 위에서 도커 엔진이 실행됩니다.
- 컨테이너들은 호스트 OS의 커널을 공유하며 실행됩니다.
이런 구조적 차이 덕분에 컨테이너는 가상머신보다 더 빠르게 실행될 수 있습니다.
컨테이너는 필요한 라이브러리와 실행파일만 포함하고 있어서 용량도 작고, OS를 부팅할 필요가 없기 때문에 실행 속도도 빠릅니다.
특히 MSA를 구현할 때 컨테이너의 장점이 부각됩니다.
여러개의 작은 서비스를 빠르게 배포하고 확장하기에 컨테이너가 적합하기 때문입니다.
기본적인 Docker 명령어
실습을 하면서 자주 사용했던 명령어 위주로 작성했습니다.
#이미지 다운로드
docker pull
#컨테이너 실행
docker run [옵션] [이미지명]
#실행중인 컨테이너 목록 확인
docker ps
#모든 컨테이너 목록 확인
docker ps -a
#컨테이너 중지
docker stop [컨테이너ID]
#컨테이너 삭제
docker rm [컨테이너ID]
#이미지 목록 확인
docker images
#이미지 삭제
docker rmi [이미지ID]
제가 처음에 느꼈던 것처럼 모든 개념이 추상적으로 느껴지는 분들이 있을 것이라고 생각합니다.
저는 실습을 해보면서 하나하나 적용해보니 도커의 가치를 점점 이해했습니다.
현재는 기본적인 사용법만을 익힌 상태지만 앞으로 더욱 학습해나갈 계획입니다.
글을 끝까지 읽어주셔서 감사합니다.
틀린 내용은 댓글로 지적 부탁드립니다.
'개발환경' 카테고리의 다른 글
[Jenkins] CI/CD 파이프라인 (0) | 2024.12.05 |
---|---|
[kubernetes] 컨테이너 오케스트레이션 (0) | 2024.12.03 |
[VSCode] Snippet 사용하기 (1) | 2024.11.19 |
[Postman] 편리한 API 호출 툴 사용해보자 (1) | 2024.09.04 |
Windows11에서 Node.js 설치하기 (0) | 2024.08.22 |