사담
진짜 찐으로 처음 배우는 분야... 눈앞이 캄캄 🥹
그래서 그냥 거의 교안을 복붙한 수준으로 정리를 해본다...
가상화(Virtualization)
하나의 컴퓨터(서버)를 여러 개처럼 나눠서 쓰는 기술
- 컴퓨터 자원을 아끼고 효율적으로 쓸 수 있다.
- 서버 하나에 여러 서비스를 동시에 운영할 수 있다.
- 서버를 여러 대 설치하는 것보다 비용이 저렴하고 관리가 쉽다.
하이퍼바이저(Hypervisor)
가상 컴퓨터(=가상머신)을 만들어주는 소프트웨어로 실제 컴퓨터와 가상 컴퓨터 사이의 중간 관리자 역할 수행
구분 | 설명 | 예시 |
호스트형(Hosted) | 내 운영체제 위에 설치 | Oracle VirtualBox |
베어메탈형(Bare-metal) | 운영체제 없이 컴퓨터가 켜지자마자 실행 | 기업용 서버 환경 |
그냥 그러기로 함
호스트형은 '쉐어하우스', 베어메탈형은 '빌라'라고 생각하기로 했음
가상화의 종류
종류 | 설명 | 예시 |
서버 가상화 | 하나의 서버를 여러 개로 나눠서 사용 | VM 여러 개 운영 |
스토리지 가상화 | 여러 저장장치를 하나처럼 묶어서 사용 | 여러 하드디스크를 하나처럼 |
네트워크 가상화 | 물리적인 네트워크를 가상으로 구성 | 가상 LAN 구성 |
데스크톱 가상화 | 내 컴퓨터 화면을 원격으로 불러옴 | 원격 데스크톱 접속 |
가상머신(Virtual Machine, VM)
가짜지만 진짜처럼 작동하는 컴퓨터
- 독립된 운영체제를 설치할 수 있다.
- 하나의 컴퓨터에서 여러 개의 VM을 돌릴 수 있다.
컨테이너
가상머신보다 더 가볍고 빠른 '작은 실행환경'
- 앱을 실행하는 데 필요한 것만 묶어둔 '상자'
- 운영체제를 따로 설치하지 않기 때문에 더 빠르고 가볍다.
항목 | 가상머신 | 컨테이너 |
운영체제 | 각자 별도로 설치 | 호스트 OS 공유 |
무게 | 무거움 (GB급) | 가벼움 (MB급) |
속도 | 느림 | 빠름 |
사용 목적 | 다양한 OS 실험 | 앱 실행, 배포 |
그냥
컨테이너는 밀키트, 가상머신은 식당 주방이라고 생각하기로 했음 걍 대충 그런 느낌
Docker(도커)
컨테이너를 만들고 실행할 수 있게 해주는 도구(= 컨테이너 엔진)
- 앱을 실행하는 데 필요한 모든 걸 묶은 '도커 이미지'를 만들고 실행한다.
- 누구나 동일한 환경에서 실행이 가능하다. 즉, "개발 → 배포 → 운영"이 쉬워진다.
Kubernetes(쿠버네티스)
여러 개의 컨테이너를 자동으로 배치하고 관리해주는 시스템
리눅스(Linux) 기본 명령어
- / = 루트 디렉토리
- ~ = 현재 사용자 홈 디렉토리
- . = 현재 위치 / .. = 상위 폴더
- 대소문자 구분
명령어 | 설명 |
ls |
기본 명령어 (목록 보기) |
ls -l |
자세한 정보 |
ls -L |
링크를 따라가서 실제 파일 보여줌 |
ls -al |
-a (숨김 파일까지) + -l (자세히) 결합 |
ls -a -l |
ls -al 과 동일 |
user@ubuntu:~$ pwd # 현재 위치(경로) 확인
/home/user
user@ubuntu:~$ history # 지금까지 입력한 명령어 목록 보기
1 ls
2 ls -al
3 pwd
4 history
user@ubuntu:~$ echo hello Aivle # 화면에 문장 출력
hello Aivle
user@ubuntu:~$ cd .. # 폴더(디렉토리) 이동
user@ubuntu:/home$
user@ubuntu:~$ cd # 폴더(디렉토리) 이동
user@ubuntu:~$ cd /home # 폴더(디렉토리) 이동 (절대경로)
user@ubuntu:~$ cd user # 폴더(디렉토리) 이동 (상대경로)
user@ubuntu:~$ mkdir mydir # 새 폴더 mydir 만들기
user@ubuntu:~$ ls # 현재 폴더 안에 있는 파일 목록 보기
mydir snap
user@ubuntu:~$ cd mydir # 폴더(디렉토리) 이동
user@ubuntu:~/mydir$ touch myfile1 # 새 파일 myfile1 만들기 (내용 없이)
user@ubuntu:~/mydir$ touch myfile2 # 새 파일 myfile2 만들기 (내용 없이)
user@ubuntu:~/mydir$ ls # 현재 폴더 안에 있는 파일 목록 보기
myfile1 myfile2
user@ubuntu:~/mydir$ ls -l # 현재 폴더 안에 있는 파일 목록 보기 (자세히)
total 0
-rw-rw-r-- 1 user user 0 Sep 30 01:05 myfile1
-rw-rw-r-- 1 user user 0 Sep 30 01:05 myfile1
user@ubuntu:~/mydir$ rm myfile1 # 파일 myfile1 삭제
user@ubuntu:~/mydir$ ls # 현재 폴더 안에 있는 파일 목록 보기
myfile2
user@ubuntu:~/mydir$ cd .. # 폴더(디렉토리) 이동
user@ubuntu:~$ rmdir mydir # 폴더 mydir 삭제
rmdir: failed to remove 'mydir': Directory not empty
user@ubuntu:~$ rm -rf mydir # 폴더 mydir 삭제 (강제 옵션 추가)
user@ubuntu:~$ ls # 현재 폴더 안에 있는 파일 목록 보기
snap
cat .profile # 파일 전체 내용 보기