오늘은 Docker에 대해 알아보겠습니다.
보통 웹개발을 하게 되면 아래와 같이 OS 위에 웹 서버,데이터베이스 등을 올려놓는 방식으로 개발 환경을 설정한다.
다들 개발 환경 설정할 때 삽질 했던 경험이 많지 않나요?
왜 안 되는지 모르겠고, 또 왜 되는지 모르는!!
생각만 해도 머리가 지끈 거리네요!
또 개발 환경 설정을 성공했다고 해도 다음에 비슷한 개발 환경이 필요하게 되면? 보통은 삽질을 기억하지 못하고 다시 삽질을 반복하게 되죠.. 악순환의 연속..!
이럴때 다음과 같은 생각이 떠오른다.
전문가가 나 대신 해줬으면 좋겠다..
하지만 우리집에 와서 키보드를 두드려 주지 않는 이상 불가능 하다..
또 아래와 같이 나의 앱과 웹 서버, 데이테베이스를 각각 다른 OS에서 설치해 관리하고 싶다!
하지만 이것은 컴퓨터가 여러대 있어야 가능합니다.(돈이 없다..)
그렇다면 또 이생각이 든다!
아래와 같이 하나의 컴퓨터 위에 가상의 컴퓨터를 만들고 그위에 OS를 깔고 웹서버, 데이터베이스를 설치하면 어떨까?
이것이 Vmware나 VirtualBox입니다.
하지만 웹서버만 돌리고 데이터베이스만 돌리고 싶은데 운영체제같이 무거운 녀석을 깔아야 하는 단점이 있다.
또 OS 위에 OS가 존재하면 속도가 느려지게 된다.
이런 상황에서 나온 생각이!
하나의 컴퓨터 안에서 웹서버와 데이터베이스가 격리된 상태로 실행되면 어떨까? 이다.
이렇게 나온 개념이 컨테이너 라는 개념이다.
Host - 나의 컴퓨터, OS가 동작하고 있는 환경
Container - OS위의 격리된 공간, 앱을 실행하는데 필요한 라이브러리와 실행파일만 포함
컨테이너는 이미 존재하는 운영체제 공유하므로 OS를 따로 설치할 필요가 없다.
또 운영체제가 하나니까 속도 느려지지 않는다!
이러한 컨테이너 기술은 리눅스 운영체제가 포함하고 있는 기술이다.
이런 컨테이너를 관리해주는 제품 중에 제일 유명하고 사실상 거의 표준이 Docker라는 녀석이다.
지금까지 Docker가 무엇인지에 대해 알아 보았다.
끝!
참고사이트 : https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=1
'웹 프로그래밍 > BackEnd' 카테고리의 다른 글
[SQL] 쿼리 튜닝이란?(+기본 개념) (0) | 2022.11.25 |
---|---|
[Express] pm2로 로컬에서 배포하기 (0) | 2021.10.20 |
[Express, nodejs] SPA에서 socket.io로 채팅 구현하기 (2) | 2021.10.13 |
[네트워크] Websocket과 socket.io (0) | 2021.10.06 |
[Backend] OAuth란?(+ 동작방법) (3) | 2021.09.30 |