가상화 / 애뮬레이션
E1000e, E1000 : 애뮬레이션 - 별도의 드라이버를 설치하지 않더라도 사용할 수 있지만 성능이 떨어진다
VMXNET, VMXNET2, VMXNET3 : 가상화 - x86 cpu 기반 명령어에서 동작하게 만들어짐.
가상머신
하이퍼바이저를 쓰는 이유
1. VM 격리
=> VM이 동작될 수 있는 공간을 제공한다
2. 자원 할당
=> 균등한 할당 : '자원관리' 라는 것을 통해 관리자가 불균등하게 나눌 수 있음
컨테이너
하이퍼바이저 대신 Linux기반 컨테이너 런타임 엔진이 들어있다.
namespace -> 격리된 공간 생성
cgroups(커널 모듈) -> 자원할당
컨테이너의 특징
1. vH/W가 없다
2. Full OS가 없다 -> 애플리케이션이 동작되는데 필요한 '최소한'의 os만 가지고 있음
3. 하이퍼바이저가 없다
컨테이너의 장점
1. 복잡하지 않다 - 가상스위치, 가상 랜카드 등을 만들 필요 없다
2. 최소한의 OS이므로 리소스가 적게 듦
3. 하이퍼바이저가 없어서 크기가 작다
컨테이너의 단점
1. 모든 OS를 지원하지 않는다 - 컨테이너 런타임 엔진의 Linux 기능들을 잘라와 포장해 사용하는 OS 형태이기 때문
2. VM Controller로 중앙집중관리 할 수 없다
가상머신 : Esxi 하이퍼바이저 + vCSA
컨테이너 : Kubernetes
VMWare Tanzu : 컨테이너를 가상머신 형태로 다루는 솔루션
컨테이너 런타임 엔진이 같다면 어떤 리눅스에서도 컨테이너를 실행시킬 수 있음.
=> 이동성이나 확장성이 가상머신보다 강력함.
컨테이너 런타임 엔진의 종류
1. LXC - 컨테이너 런타임 엔진의 시초. System Container를 만들어 애플리케이션의 Full Linux OS를 만든다.
=> 하지만 애플리케이션이 무거워진다.
2. Docker - Application Container을 만듦. App + 최소한 Linux os Library 기능
우리는 Docker의 (EE/CE) 중 CE를 사용 예정
172.20.14.13
ubuntu/ubuntu
Docker 설치하기
-> cat /etc/os-release
-> 우선 우분투 버전 확인 (20.04)
설치 진행 명령어 입력
설치가 완료되었다면 아래와 같이 확인해본다
-> docker info
VMware 컨테이너 오픈소스 확인 홈페이지
-> VMware Marketplace
도커 홈페이지 회원가입
도커 Hub 탐방
도커에서 ubuntu 관련 이미지 search
-> docker search ubuntu
-> 저장소이름/이미지이름:태그
도커 Hub 에서 이미지 다운로드해보기
-> docker pull ubuntu
-> 따른 태그 입력 없을 시 기본값인 latest 설정 확인
다운받은 이미지 확인
-> docker images
-> 컨테이너를 생성하기 위한 '이미지'를 다운받은 것임
도커를 실행시키고 이미지 안에 들어가기
-> docker run -i -t ubuntu
컨테이너에서 기본 도구들 설치하기
-> apt update
-> apt install net-tools
net-tools설치완료 후 ip 자동할당 확인
-> ifconfig
-> 원래 접속했던 ubuntu와 버전이 다름을 확인할 수 있다
=> 지금까지 결과적으로는 이미지를 이용해서 컨테이너를 실행시킨 것이다.
=> 컨테이너를 종료하는 순간 구성했던 모든 것들이 사라진다. (가상머신처럼 vmx, vmdk 같은 파일이 없기 때문)
컨테이너 종료
컨테이너 시작
-> status 부분이 Up으로 바뀌었다.
컨테이너 전원 온 상태로 나오기
Ctrl + P + Q
컨테이너를 나온 상태에서 컨테이너 종료시키기 (Stop)
컨테이너 삭제하기
이미지를 삭제하기
이미지 다운로드
* apt update
* apt-get install -y iputils-ping
* apt install net-tools
docker 생성 (create)
docker 접속
-> docker attach ubuntu-18.04
-> 컨테이너 안에서 우분투 이미지 버전을 확인하는 것
-> 컨테이너를 벗어난 상태에서 우분투 이미지 버전을 확인하는 것
-> 차이 확실히 알것
이제 20.04 버전과 latest 버전도 생성해보기
20.04 버전
latest 버전
3개 컨테이너 다 gateway와 ping 성공 확인하기
이제 컨테이너 삭제해보자
포트바인딩
-> docker run -i -t --name ubuntu-18.04 -p 80:80 ubuntu:18.04
-> 앞 80은 ubuntu host, 뒤 80은 컨테이너 host 포트번호
-> docker ps -a 로 Up 상태 확인하기
nginx 웹서버 설치
-> apt install nginx
-> service nginx start
-> service nginx status
-> 협회 로컬 PC에서172.20.14.13 접속
=> 컨테이너는 가상머신과 달리 애플리케이션을 이용해 '서비스'를 제공하는 것이 명확하다.
=> 개발자들이 자주 쓰며 복잡한 가상화 인프라 없이 결과를 바로 볼 수 있음
=> 이동성, 확장성이 가상머신보다 훨씬 뛰어나다.
=> 가상머신과 비교하는게 가장 크게 공부될 것
=> 엔지니어는 기술이 시장에서 가치가 있는지 판단하는 것도 중요..
일반 리눅스에서는 터미널을 여러개 열 수 있었지만, 컨테이너는 터미널을 하나만 열 수 있다.
-> 최소한의 os이기 때문에 한쪽에서 명령어를 입력하면 다른 창에서도 동시에 입력된다.
-> 우리가 컨테이너에 직접 접속해 실행시킬 수 있는 터미널은 하나 뿐
이제 2개의 컨테이너를 올려 서비스를 합쳐보자
-> 한 컨테이너에 프로세스 하나만 실행해 서로 구분짓는 것이 도커의 철학이다.
1. mysql 이미지를 사용해 데이터베이스 컨테이너
2. 미리 준비된 워드프레스 이미지로 워드프레스 웹 서버 컨테이너 생성
-> docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7
-> docker run -d -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=password --name wordpress --link wordpressdb:mysql -p 80 wordpress
-> 2개의 컨테이너 생성하고 실행하자
-> docker ps -a
-> 49154 포트번호 확인
-> 172.20.14.13 호스트와 포트바인딩 해놨기 때문에
-> 172.20.14.13:49154 로 워드프레스 접속 가능
'ㄴ Kubernetes' 카테고리의 다른 글
8월 18일 (이미지 커밋, 배포, 쿠버네티스 설치) (0) | 2022.08.18 |
---|---|
8월 17일 (도커 볼륨, 네트워크 설정) (0) | 2022.08.17 |