학교 공부/클라우드컴퓨팅

[클라우드컴퓨팅] 3-1. 가상화와 도커

KimNang 2024. 11. 24. 22:33

1. 가상화와 Docker의 개요

- 가상화는 물리적 컴퓨터를 여러 개의 가상 컴퓨터로 나눔

- 하나의 장비를 여러 대의 PC처럼 운영할 수 있게 해줌

가상화
  • 가상화의 개념
    - 한 컴퓨터를 여러 대의 가상의 작은 컴퓨터로 나누는 기술
  • 가상화의 장점
    - 컴퓨터를 여러 대 사지 않아도 다양환 환경을 사용할 수 있음
    - 한 작업이 문제가 생겨도 다른 작업에 영향 주지 않음
Docker의 특징 : 가상화

- 컴퓨팅 환경에서 가상화 기술의 한 형태

- 컴퓨터 내 독립적인 소규모 환경 컨테이너 구축

- 다양한 운영체제나 프로그램이 독립적으로 실행될 수 있는 공간 제공

- 한 대의 컴퓨터에서 다양한 운영체제를 동시에 사용하는 것과 유사

  • Docker의 장점
    - 보통 프로그램은 특정한 운영체제에서만 작동
    - 프로그램과 필요한 환경을 하나의 가상 주방으로 만들어줌
    - 본 주방에서도 가상주방을 실행할 수 있도록 해서 마치 Windows 컴퓨터와 Ubuntu 컴퓨터 두대처럼 사용 가능

2. 프로그램 개발과 Docker 사용

- Docker로 개발 환경을 표준화하여, 다양한 환경에서 프로그램 실행 가능

- 크로스 플랫폼 호환성을 얻고, 개발 및 배포 효율적

개발 환경과 실행 환경의 차이

- 개발자가 프로그램을 만들고 테스트하는 환경은 보통 Windows 같은 운영체제 사용

- 실제로 프로그램이 실행되는 AWS는 Ubuntu 같은 리눅스 환경을 사용하는 경우가 많음

  • 두 환경의 차이점
    • 운영체제의 차이
      - 개발 환경인 Windows와 실행하는 Ubuntu는 프로그램이 동작하는 방식이 다름
    • 환경의 실제 예
      - 개발 환경 Windows에서 잘 작동하는 프로그램이 실행 환경 Ubuntu에서는 오류 가능
    • 파일 경로의 차이
      - 개발환경 Windows는 파일 경로를 C:\폴더\파일처럼 사용
      - 실행 환경 Ubuntu는 /폴더/파일처럼 다르게 사용
    • 필요한 라이브러리와 설정
      - 프로그램이 실행되려면 특정한 소프트웨어나 설정이 필요할 수 있음
      - 개발 환경과 실행 환경이 다르면 설정이 맞지 않아 프로그램이 정상적으로 실행되지 않을 수 있음
Docker 컨테이너를 이용한 환경 차이 극복

- 개발환경과 실행 환경을 일치시킴으로써 효율성을 극대화하는 도구

- 실행에 필요한 운영체제, 파일 경로, 소프트웨어 설정 등을 하나의 컨테이너(Container)로 구성

- Windows에서 개발된 프로그램도 Ubuntu 환경에서 원활하게 실행될 수 있도록 설계됨

3. Windows 환경에서 Docker 설치

Windows에서 가상화 가능 확인
  1. 작업 관리자 열기
    - Ctrl + Alt + Del 동시에 누른 후 '작업 관리자' 선택
    - 작업표시줄 우클릭 후 '작업 관리자' 클릭
  2. 성능 탭 클릭 후 가상화가 '사용'으로 되어 있는지 확인
가상화가 가능하지 않을때 Bios 설정
  1. 컴퓨터 시스템 종료
  2. 컴퓨터 전원 켜기
  3. 시작되는 동안 특정 키를 반복적으로 눌러 BIOS설정으로 들어감
  4. BIOS Setup의 가상화 기술 선택으로 이동한 후 엔터키로 사용 설정
  5. 변경 사항을 저장한 후 재부팅
운영 체제 확인
  1. Windows 키 + Pause Break 키 클릭
  2. 윈도우 운영 체제 확인
  3. Windows Home 에디션의 경우 Hyper-V 설치해야함
Hyper-V 설치
  • Hyper-V기능
    - 윈도우에서 리눅스와 같은 가상 운영체제를 실행할 수 있는 기능
  • Home 에디션
    - Windows Home 에디션에는 Hyper-V가 기본으로 제공되지 않음
    - Hyper-V를 설치 해야함
    - Hyper-V는 해당 블로그를 참고하여 수행함 https://makeutil.tistory.com/188
  • 다른 에디션
    - Windows Pro 및 Windows Enterprise 에디션에는 Hyper-V가 기본 설치되어 있어 추가 설치가 필요 없음
Hyper-V 설정
  1. Windows 기능 켜기/끄기 검색 후 클릭
  2. 모든 Hyper-V 항목이 체크되었는지 확인
  3. 체크되지 않은 기능 있으면 모두 선택 후 확인 누르고 재부팅
WSL 커널 업데이트
  1. https://learn.microsoft.com/ko-kr/windows/wsl/install-manual 페이지 접속
  2. 화면 중간에 링크를 클릭해 파일 다운로드
  3. 다운로드 받은 파일을 기본 옵션으로 설치
  4. 컴퓨터 재시작
Docker 설치
  1. https://docs.docker.com/desktop/setup/install/windows-install/ 페이지 접속
  2.  'Docker Desktop for Windows' 클릭하여 설치
  3. 다운로드 받은 파일을 더블 클릭 후 설치
Docker 실행
  1. 바탕화면에서 Docker Desktop 아이콘 더블 클릭
  2. 이메일이랑 설문은 스킵
  3. 좌측 하단의 Engine running 메시지를 확인
    - 메시지가 없으면 10분 정도 기다리기
    - 10분 후에도 나오지 않으면 설치 실패한 것
  4. 윈도우즈에서 명령 프롬포트 검색
    - 명령 프롬프트 -> 관리자 권한으로 실행 클릭
  5. docker -v 입력해서 Docker 버전이 출력되는지 확인

4. Docker 가상화 특징

Docker 가상화를 이용한 Ubuntu 실행

- 하나의 물리적 컴퓨터를 여러 가상의 컴퓨터처럼 사용할 수 있게 만드는 기술

- 가상화 기술을 기반으로 작동하지만, 기존의 가상화 방식과는 차별화된 컨테이너 기반 가상화를 제공

- 훨씬 더 가볍고 빠르게 환경을 만들고 배포할 수 있음

가상화 기술의 진화 : Docker와 기존 가상화의 차이점
  • 기존 가상화 (Virtual Machine)
    - 새로운 운영체제 설치 필요 : 각 가상 컴퓨터마다 운영체제를 새로 설치해야 함
    - 무겁고 자원을 많이 사용 : 운영체제 전체를 설치하므로 CPU 메모리, 디스크 공간 많이 필요
    - 독립적이지만 비효율적 : 각 가상 컴퓨터가 별도의 운영체제를 가지고 있어 비효율적
  • Docker (컨테이너 기반 가상화)
    - 운영체제를 공유 : 물리적 서버에 설치된 운영체제를 그대로 활용하고 필요한 환경만 추가함
    - 가볍고 자원을 적게 사용 : 필요한 최소한의 도구와 설정만 포함하므로 시스템 부하가 적음
    - 효율적이고 빠른 실행 : 기존 운영체제 위에서 바로 실행되므로 시작 속도가 매우 빠름

5. Docker 가상환경 Ubuntu 실행

Docker 가상환경 Ubuntu 실행
  1. 윈도우즈에서 명령 프롬포트 검색
    - 명령 프롬프트 -> 관리자 권한으로 실행 클릭
  2. 시스템 설계도를 가져오기
    docker pull ubuntu

  3. 가지고 있는 설계도 리스트 확인
    docker images 
    - 다운로드한 Docker 이미지 목록을 확인할 수 있음
    - 이를 통해 현재 시스템에 어떤 설계도가 준비되어 있는지 확인 가능
    - 이미지 목록을 확인하면 사용하지 않는 이미지를 정리하거나, 새로운 이미지를 추가할 수 있음

  4. 다운받은 설계도로 작업 시작함
    docker run -it ubuntu
    - Ubuntu 명령어로 작업 가능
    - -it 옵션 : 대화형 모드로 진입, 직접 작업 가능함
  5. 가상의 Ubuntu에서 빠져나가 Windows로 돌아가기
    - Ctrl키와 P 키를 동시에 누름
    - 이어서 Ctrl키와 Q키를 동시에 누름
docker ps

- 실행 중인 컨테이너 조회
- 각 컨테이너는 고유 ID를 가지고 있으며, 필요하면 이 ID를 통해 제어 가능

- '-a' 옵션 : 모든 컨테이너 조회

 

docker attach

docker attach [컨테이너 ID]
- 가상 컨테이너로 돌아감

- 실행중인 가상 컨테이너로 돌아감

 

docker stop

docker stop [컨테이너 ID]
- 실행중인 컨테이너 종료

 

docker rm

docker rm [컨테이너 ID]
- 사용이 끝난 컨테이너 삭제
- 더 이상 사용하지 않는 컨테이너를 삭제하여 공간을 확보