# 03. 콘테이너? 뭔가 캡슐화하여 하나의 독립적으로 움직이는 것 ? 스미스 요원 만들기

콘테이너란 무엇인가 ?

근데 왜 콘테이너라는 얘기가 나오는가 ? 그래 서비스 업무를 나눈 것들을 독립적으로 패키징하여 독립적으로 동작할 수 있도록 하는 것이 중요하겠네

portability 이 개념이 중요하겠습니다.

[![image.png](http://web.joang.com:8083/uploads/images/gallery/2023-10/scaled-1680-/QYwimage.png)](http://web.joang.com:8083/uploads/images/gallery/2023-10/QYwimage.png)

이제 콘테이너화 한다는 것은 어느 곳에도 동일한 조건의 기본적인 환경만 주어진다면 하나 이상이 동작할 수 있는 환경을 말합니다.   
java를 생각해보면 자바의 **<span style="color: rgb(230, 126, 35);">WORA</span>**(Write Once, Run Anywhere)와 비슷한 개념이다. 제임스고슬링이 전자 장비 회사(썬)를 다닐 때 다양한 장비에 계속해도 비슷한 기능을 개발하는 것이 불합리하여 JVM만 각 장비별로 구축하고 원 소스는 하나로 유지하고자 하여 만들었다고 하는데 유사한 이유가 될 것이다.

잘 패키징된 콘테이너는 이제 표준을 준수하는 어떤 곳에서도 하나 이상이 동작하기 때문에 복제, 확장, 중복, 축소 등 매우 탄력적인 서비스의 기능을 수행한다.

그럼 콘테이너의 구조는 어떠한가 ?

[![image.png](http://web.joang.com:8083/uploads/images/gallery/2023-10/scaled-1680-/m51image.png)](http://web.joang.com:8083/uploads/images/gallery/2023-10/m51image.png)

과거의 OS를 포함한 was 환경이 작은 파일 하나로 줄어들어 패키징된다고 생각하면 된다.

[![image.png](http://web.joang.com:8083/uploads/images/gallery/2023-10/scaled-1680-/9OAimage.png)](http://web.joang.com:8083/uploads/images/gallery/2023-10/9OAimage.png)

콘테이너의 코어 수와 메모리 예시

[![image.png](http://web.joang.com:8083/uploads/images/gallery/2023-10/scaled-1680-/qQkimage.png)](http://web.joang.com:8083/uploads/images/gallery/2023-10/qQkimage.png)

우리집 컴퓨터에 동작하는 콘테이너들

- 개인 Bookstack : [http://web.joang.com:8084/shelves](http://web.joang.com:8084/shelves)
- Showcase용 Bookstack : [http://web.joang.com:8083](http://web.joang.com:8083)
- 메타 시스템 : [http://web.joang.com:8000/meta/login.do](http://web.joang.com:8000/meta/login.do) + 배치 2개 (메타 백업, Youtube Download 배치)
- DB 관리툴 (Adminer) [http://192.168.0.200:8082](http://192.168.0.200:8082)
- Postgresql (2EA)
- Mysql (2EA)
- GitLab : [http://192.168.0.200:8085/users/sign\_in](http://192.168.0.200:8085/users/sign_in)
- Jenkins : [http://192.168.0.200:30001](http://192.168.0.200:30001)
- redmine : [http://192.168.0.200:30002](http://192.168.0.200:30002)
- showcase application 5 services X 2 replicaset : [http://192.168.0.200:8024](http://192.168.0.200:8024)
- Kubernetes Dashboard : [https://192.168.0.200:31055/#/login](https://192.168.0.200:31055/#/login)
- 

하나의 PC에 위 서비스가 모두 돌고 있다는 ㅎㅎ

[![image.png](http://web.joang.com:8083/uploads/images/gallery/2023-10/scaled-1680-/L2cimage.png)](http://web.joang.com:8083/uploads/images/gallery/2023-10/L2cimage.png)