본문 바로가기

항해 시절

Linux, Ubuntu,Docker 공부 (항해 8주차 회고록)

728x90
728x90

실전 프로젝트 첫 주 기간에 자주 들었고 사용도 하고있는 Ubuntu에 대해 잘 모른다는 생각이 들어 공부를 하면서 정리를 해보려고 한다

Docker는 실전프로젝트에서 Webrtc를 기반으로 한 Openvidu 라이브러리를 써보려고 구글링 하였을 때 Docker 얘기가 자주 언급되어

같이 정리 해본다.

Linux는 커널(kernel) 이다

커널이란?

컴퓨터 과학에서 커널(kernel)은 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 통제한다.

운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다. 핵심이라고도 한다.

Linux 커널은 오픈 소스로 이를 통해 커스텀 OS(운영체제)를 만들 수 있다고 한다.

리눅스는 운영체제 중 하나 인 줄 알았는데 커널이라고 하니, 운영체제와 커널의 차이점이 궁금해졌다.

운영체제와 커널의 차이점은?

운영 체제는 크게 사용자 영역과 커널 영역으로 나눠져 있다

커널은 운영 체제의 일부분으로, 운영 체제의 핵심적인 역할을 하는 부분이다.

커널은 운영 체제에서 CPU, 메모리, 입출력 장치등과 같은 중요한 자원을 초기화하고 관리하는 부분이다.

우분투란?

리눅스는 다양한 배포판이 있다.

(배포판이란? 리눅스에서 작동하는 여러 종류의 프로그램을 꾸러미 하나로 모아놓은 것을 말한다)

배포판 현황을 사람에 비유하면 3대 명문 가문으로 데미안,레드햇,슬랙웨어가 있고 우분투는 데미안 소속이다.

우분투는 데스크톱 버전으로 개인용 컴퓨터에 적합하여 많이 쓰이고 있는 Linux 배포판이다.

Dokcer란

내 컴퓨터에서 웹개발을 한다고 하면 내 컴퓨터에 웹서버 및 데이터베이스를 깔아야 한다

이런 소프트웨어를 사용하여 나의 웹을 만들어 가게 된다.

하지만, 그러한 것들을 설치하는 것은 까다롭고 복잡하고 한번에 안될 수도있다.

그래서 하게 된 생각이 컴퓨터를 여러대 구해서 한대에는 웹서버를 깔고, 한대에는 데이터베이스를 깔아서 쓰자라는 것이다

하지만 그렇게 하려면 돈이 많이 들게 된다.

그래서 하게 된 생각은 하나의 컴퓨터(OS)위에 OS를 여러 개 설치 해서 하나의 컴퓨터로 여러 컴퓨터를 사용하는 거처럼

하자는 것이다.

가능은 하지만 OS는 무거워서 굉장히 비효율적이라고 느끼게 된다

최종적으로 나오게 된 생각은 하나의 운영체제 위에 독립된 컨테이터를 생성한 뒤 (운영체제 전체가 아닌) 앱을 실행하는데 필요한

라이브러리와 실행파일만 포함하는 것이다.

그러한 컨테이너로 웹서버, 데이터베이스를 구축하자는 것이다.

운영체제가 하나니깐 속도가 느려지지도 않고, 저장 장치에 용량도 아낄 수 있다.

리눅스 운영체제에서는 이러한 웹 실행방법이 내장되어 있어서, 이 방법을 컨테이너 기술이라고 하고

컨테이너 기술을 쓰게 만드는 가장 잘나가는 제품이 Docker 인 것이다.

알아둬야 할 것은 2가지이다

1. 컨테이너 기술은 Linux 기술이다.

2. 내 컴퓨터가 윈도우, 맥이면 못 쓰는 것인가 하면? 아니다, 내 운영체제 위에 가상 머신을 깔고 그 안에 리눅스를 깔고 리눅스 운영체제 위에서 컨테이너 기술을 쓸 수 있다, 하지만 이러한 것은 복잡해 보인다.

그래서 Docker는 자기가 알아서 가상머신을 만들어주고 그 위에 리눅스를 설치해준 뒤 그 위에서 컨테이너 기술을 쓰게끔 해준다.

(하지만 유의해라 리눅스가 아닌 운영체제에서 Docker를 사용한다는 것은 결국 가상 머신 설치 뒤 컨테이너 기술을 쓰는 것이므로 성능 저하는 발생한다)

docker 실행 방법자체는 구글링 및 유튜브, 또는 생활코딩에서 참고하면 될 것 같다.