-
Docker에 대해 파헤치기Docker 2024. 8. 13. 19:34
제가 개인적으로 학습한 내용들을 글로 옮기는 과정입니다. 부족한 전문성과 부정확한 서술을 유의하고 읽어주세요.
도커에 대해 파헤치기 앞서...
우리가 만든 서비스를 세상에 선보이는 작업을 개발에선 '배포'라고 합니다. 기본적으로 배포를 하기위해서는 어플리케이션과 서버, 그리고 db가 갖춰져야 사용자에게 최소한의 서비스를 제공할 수 있을 겁니다.
현재 우리가 가지고 있는것은 아래와 같다고 가정해봅시다.
- 리눅스 운영체제의 서버 컴퓨터
- Java 8 버전의 a 어플리케이션
- a가 사용하는 MySQL 5.0 버전
이렇게 배포환경을 준비하고 완벽하게 배포를 마쳤습니다! 그렇다면 이제 개발자가 해야할 일은 모두 끝난 걸까요?
몇 개월 후, 서버에 추가해야할 아래와 같은 요구사항이 전달되었습니다.
- Java 11 버전의 새로운 어플리케이션: b
- b가 사용하는 MySQL 8.0버전
현재 서버 컴퓨터에는 MySQL 5.0을 사용하고 있고, Java 8 버전을 사용중인 a 어플리케이션이 있습니다. 이 두가지를 잘 연결시켜야 요구사항을 만족시킬 수 있겠죠?
이런 시스템에 종속되는 문제들은 개발자들이 온전히 개발하는데에 많은 시간을 할애하게 만들었습니다. 이는 생산성의 저하와 연결되죠.
이 문제를 해결하기위해서....는 아니지만 도커는 이러한 문제를 획기적으로 개선시켰습니다.
Docker 개요
Docker는 어플리케이션을 쉽게 만들고, 테스트하고, 배포할 수 있는 소프트웨어 플랫폼입니다. 이는 어플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 실행할 수 있습니다.
주요 특징
- 컨테이너화 : 어플리케이션에서 필요한 모든 것을 패키지로 묶어 실행가능
- 경량 : 도커는 운영체제의 커널을 공유하므로, 가상머신보다 빠르고 가벼움
- 이식성 : 도커 컨테이너는 어느 환경에서도 동일하게 실행됨
- 확장성 : 여러 컨테이너를 효율적으로 관리할 수 있고 확장에도 유리함
주요 키워드
- 이미지 : 어플리케이션과 모든 실행에 필요한 파일을 포함한 읽기 전용 템플릿. 쉽게말하면 컨테이너를 어떻게 만들지가 적혀있는 청사진입니다.
- 컨테이너 : 이미지를 기반으로 생성된 어플리케이션의 인스턴스입니다.
- DockerFile : 이미지를 생성하기 위한 명령들이 있는 파일입니다. 여기에 적힌 명령들이 이미지를 통해 컨테이너를 만들때 실행됩니다.
- DockerHub : 도커 이미지를 저장하고 공유하는 저장소입니다.
- 볼륨 : 컨테이너 데이터를 지속적으로 저장하는 매커니즘을 일컫습니다.
도커는 언제 사용할까?
1. 일관된 개발환경을 유지하고 싶을때
2. 어플리케이션을 빠르게 배포하고 싶을때
3. 마이크로 서비스 아키텍처를 도입할때
4. CI/CD 파이프라인을 구축할때
5. 어플리케이션 격리가 필요할때
6. 쉽게 스케일링하고 싶을때
...등등이 있습니다.
다음 시간에는 Docker의 명령어에 대해 알아보겠습니다.