Docker 개요

공부기록·2023년 10월 18일
0
post-thumbnail

도커의 필요성

  • 여러 장소에 동일한 어플리케이션 환경을 구축하는 것은 동일한 작업을 반복적으로 해야하는 것이다.
  • 컴퓨터의 환경이 달라지면 이가 잘 작동하지 않을 가능성도 존재한다.

  • 어플리케이션 실행 환경 전체를 이미지(image) 파일로 생성하여 어디서든 컨테이너라 부르는 격리된 공간에 어플리케이션 실행환경을 쉽게 복원할 수 있도록한다.
  • 실행에 필요한 바이너리, 라이브러리, 구성 파일 등을 패키지로 묶어 이미지로 만든다.
  • github나 도커허브를 이용하여 여러사람들과 이미지파일공유가 가능하다.



도커란?

  • 어플리케이션 개발, 실행 및 공유를 목적으로한 개방형 플랫폼이다.
  • 여러 컨테이너는 동시에 실행이 가능하며 작업하는 동안 컨테이너를 공유할 수 있으며 공유하는 모든 사람은 동일한 컨테이너를 갖게된다.

컨테이너란?

  • 소스코드와 종속성을 패키징하는 표준 소프트웨어 단위로 어플리케이션이 다양한 컴퓨터환경에서 실행할 수 있도록 한다.
    • chroot : 특정 디렉토리를 root로 인식하게하는 명령어
    • namespace : mnt.pid,user,cgoup 등 자원을 관리하는 기능 제공
    • cgroup : CPU, 메모리, 디스크, I/O, 네트워크 등의 자원사용량을 관리하여 특정 어플의 과도한 자원 사용을 자제하도록한다.

dockerfile

  • 도커 이미지를 생성하는 스크립트이다.

image

  • 읽기 전용파일로 도커 엔진은 도커 이미지를 이용하여 컨테이너 생성이 가능하다.
  • 하나의 이미지로 여러개의 컨테이너 생성 및 실행이 가능하다.

container

  • 가상의 격리된 환경에서 독립된 프로세스로 동작한다.



가상머신과 컨테이너 비교

가상머신

  • 물리적 하드웨어 가상화
  • 호스트 OS 위에 가상화 소프트웨어인 하이퍼바이저(VMWARE, VirtualBox)를 이용하여 여러개의 게스트 os를 구성하는 방식이다.
  • 하이퍼바이저는 가상머신을 생성, 실행, 모니터링하는 중간관리자 역할이다.
  • 각 가상머신은 독립적으로 OS, 어플리케이션, 필수 바이너리 및 라이브러리 설치 및 동작한다.

컨테이너

  • 프로세스 가상화 (운영체제 레벨 가상화)
  • 여러 컨테이너가 호스트 OS의 커널을 공유하고 격리도니 프로세스로 실행이 가능하다.
  • 하이퍼바이저와 게스트 OS가 없어서 가벼워서 어플을 많이 실행할 수 있고 이미지 파일의 복제, 배포가 쉽다.
  • 게스트 OS를 부팅하지않아 어플의 시작이 빠르다.



도커 개발환경 구축

환경구축

-CPU 가상화 기능 활성화

  • AMD : BIOS에서 SVM mode를 enable로 수정한다.
  • Intel : BIOS에서 Virtualization을 enable로 수정한다.
  • Window 기능에서 Linux용 Window 하위 시스템 체크박스를 활성화하다.

설치과정

  • visual studio code 설치
    • WSL(Windows Subsystem for Linux)에서 GCC 설치
    • 도커 확장 설치
    • Dev container 설치 - docker의 폴더나 저장소를 열어볼 수 있게한다.

컨테이너 생성

	docker run -d -p 80:80 docker/getting-started
  • -d 백그라운드에서 분리모드로 컨테이너 실행
  • -p 80:80 호스트의 포트 80을 컨테이너의 포트 80에 매핑한다.
  • docker/getting-started : image명 docker 내에서도 나옴.

컨테이너 중지 및 제거

	$ docker ps //PORTS(Container ID) 확인
    $ docker stop 컨테이너명
    $ docker rm 컨테이너명

앱의 컨테이너 이미지 빌드

  • 어플을 빌드하기 위해 Dockerfile 생성

0개의 댓글

관련 채용 정보