ㄴ Kubernetes

8월 16일 (도커, 워드프레스 접속)

깜자왕 2022. 8. 16. 17:33
반응형

가상화 / 애뮬레이션

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 로 워드프레스 접속 가능