일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 톰캣
- redis
- Spring cloud gateway
- 테스트코드
- Thread
- DispatcherServlet
- 우아한 테크 코스
- 트랜잭션
- Gateway
- AOP
- 살아남았다.
- MDC
- oauth
- spirng
- 오어스
- Kotlin
- resilience4j
- tomcat
- Transactio
- 동시성문제
- Elk
- 커넥션 풀
- 최종 합격
- 우테코 5기
- Spring Batch
- HikariCP
- circuitbreaker
- JWT
- 우테코
- 우아한테크코스
- Today
- Total
코딩은 내일부터
도커? 그게 뭔데. 본문
개발을 하면서 도커라는 단어를 많이 접할거다.
도커 왜씀?
먼저 개발을 하면서 특정 프로그램을 다운받는 과정을 생각해보자
보통을 위와같은 흐름으로 프로그램을 설치할 것 이다.
But!!!
원하는 흐름대로 프로그램 설치가 안될것이다.
왜냐면 일반적으로 첫번째 사진처럼 흘러가지만,
갖고있는 서버, 버전,운영체제 등등 여러환경에서 에러가 발생한다. 그리고 설치과정이 (비교적)복잡하다(?)
이러한 과정을 도커한테 실행시켜줘라고 말하면 도커는 바로 실행 시켜준다!!
이렇게 도커의 장점 중 하나를 알아봤다. 다음으로는 도커가 무엇인지 알아보겠다.
도커가 뭔데?
컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구 이며
컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다.
라고 위키백과에 도커가 무엇인지 찾아봤을 때 컨테이너라는 단어가 많이 나오고 무슨 뜻인지 이해도 잘 안된다.
그러면 먼저 컨테이너가 뭘까?
컨테이너란 무엇인가
일반적으로 현실 세계에서 컨테이너의 개념을 생각해보면 철로된 상자이고,이 상자를 통해 물건을 옮길 수 있다고 생각할 수 있다.
이와 비슷하게
서버에서의 컨테이너는 일반적인 컨테이너 개념과 비슷하게 다양한 프로그램, 실행환경(물건)을 컨테이너로
추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.
이미지? (*.JPG)?
컨테이너랑 같이 세트로 따라다니는 단어가 있다 바로 이미지다.
이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을
실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지이다.
즉, 이미지는 하나의 실행파일(?)이라고 생각하면 된다.
또한 도커 컨테이너는 이미지의 인스턴스이다!!
격리는 어떻게 하는거야?
도커를 알아보면 컨테이너를 격리 시킨다고 나와있다.
방법으로는 리눅스에서 쓰이는 Cgroup(control groups)과 네임스페이스 (namespaces)를 통해 격리를한다.
먼저 Cgroup은 프로세스들이 사용하는 시스템의 자원의 사용 정보를 수집하고, 제한시키고, 격리시키는 리눅스 커널 기능(모든 프로세스에 대해 리소스 사용 정보를 수집함)을 한다.
다음으로 네임스페이스는 리눅스 커널에서 제공하는 프로세스 격리 기술이다.
이것들은 컨테이너와 호스트에서 실행되는 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능이다.
어? Linux? 나는 지금 맥OS를 사용하고있는데?....
당황할 수 있지만 터미널에서 docker version을 입력하면 다음과 같이 linux라고 나와있는것을 볼 수 있다.
정리하자면 도커서버는 리눅스 환경에서 동작하고 있다는것을 알 수 있다.
그래서 도커 왜 씀?
1. 환경 일관성
처음 예를 들었던 프로그램을 설치할 때 발생하는 에러는 동일한 환경
즉, 그 프로그램의 맞는 환경을 셋팅해줘야했다. 하지만 도커를 사용함으로써 동일한 환경에서 개발 가능하다는 장점이 있다.
2. 업데이트 및 롤백 관리
이미지를 업데이트하거나 롤백하는 과정이 간단하며, 이전 상태로 쉽게 되돌릴 수 있다.
3. 경량화
컨테이너 이미지는 애플리케이션과 필요한 의존성만을 포함하므로 가볍고 작은 크기를 가진다.
따라서 이미지 공유 및 배포가 용이하다.
4. 리소스 격리
컨테이너는 각각 독립된 환경에서 실행되므로 서로 간섭하지 않고 자원을 격리하여 안정성과 보안을 강화된다!
이러한 이유로 도커를 사용한다! 끝!
'우아한 테크 코스(우테코) > 우테코 공부' 카테고리의 다른 글
Thread 와 톰캣 튜닝하기 (2) | 2023.09.09 |
---|---|
HTTP와 톰캣은 뭘까? (6) | 2023.09.06 |
트랜잭션과 트랜잭션 격리수준 그게 뭔데. (0) | 2023.08.23 |
OAuth 그게 뭔데. (개념 및 구현) (0) | 2023.08.16 |
JWT 그게 뭔데. (3) | 2023.08.11 |