본문 바로가기
docker

[Docker] Docker(도커)란

by devjh 2021. 5. 24.
반응형

1. docker vs vm

docker가 등장하기 이전에도 호스트 시스템을 여러대의 격리된 환경으로 쓰고 싶어했습니다.

 

 

 

docker 이전에 사용되던 가상머신은 호스트시스템위에 소프트웨어로 컴퓨터를 만들어 격리시켰습니다.

(대표적인 소프트웨어는 Virtual Box, Vmware, hyper-v)

가상머신은 OS이미지 + 하드웨어 가상화를 위해 하이퍼 바이저를 사용하였으며 완전한 os를 실행시킬 수 있다는 장점이 있지만 성능이 떨어지는 크나큰 문제점이 발생하였습니다.(os를 위한 파일, 라이브러리 데이터들은 매우 무겁습니다.)

 

이러한 문제를 해결하기 위해 os를 직접 올리는게 아니라 호스트의 커널을 같이사용하고 프로세스(애플리케이션) 레벨에서 격리시키는 기술인 Docker가 등장하게 됩니다.

 

controll-group,namespace를 베이스로 실행되는 도커는 가상환경처럼 보이지만, 호스트의 커널을 사용하며 실행에 필요한 패키지를 모아, 리소스를 격리시켜 띄우는 프로세스입니다.

 

또한 이미지를 사용하여 컨테이너로 운영하게 되면 환경에 대한 불변성을 보장받을 수 있다는 이점도 챙길수 있어 Docker는 개발 및 배포에 꼭 필요한 software로 자리잡게 되었습니다.

 

요약

도커는 커널가상화 vs vm은 하드웨어 가상화

도커는 어플리케이션(프로세스) 중심, vm은 os중심

 

 

2. docker image

  • image는 컨테이너를 생성하기위한 환경을 담아놓는 요소로 우분투 이미지를 예로 들면 가상머신을 생성할때 사용하는 iso파일과 유사합니다.
  • 원격 이미지 저장소인 docker hub 및 harbor 등에서 이미지를 push, pull 받을 수 있습니다.

- 이미지 pull 받기

$ docker pull ubuntu:latest

 

3. docker container

  • 이미지를 이용해 구축하며 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간입니다.
  • 하나의 이미지로 여러개의 컨테이너를 실행 할 수 있으며 각각의 컨테이너는 독립된 공간입니다.
  • 다운받은 image를 이용하며 run 명령어를 이용해 실행할 수 있습니다.

명령어 : docker run [옵션] 이미지:태그 [커맨드] [ARG]

옵션   설명
-d detached mode 백그라운드 모드로 실행
-it -i와 -t를 동시에 사용한것으로 터미널 입력을 위해 사용
-v 호스트와 컨테이너를 연결(마운트, volume)
-name 컨테이너 이름 설정
-p 호스트와 컨테이너의 포트를 연결
-rm 컨테이너가 종료되면 컨테이너 자동 삭제
--no-cache 이전 레이어에 같은명령어로 빌드됐던 기록이 있더라도 무시

- pull 받은 ubuntu 이미지를 이용하여 컨테이너 실행 컨테이너 이름은 my_ubuntu이며 자동 삭제하는 명령어(도커허브에 존재하는 이미지라면 자동으로 pull받아서 컨테이너가 실행됩니다.)

$ docker run -it --rm --name my_ubuntu /bin/bash

 

4. Docker 기본명령어 

명령어 : docker <옵션> [ARG]

옵션 설명
search 이미지 검색
pull 이미지 받기
images 이미지 목록 확인
run 컨테이너 실행
ps 컨테이너 목록 확인
restart 컨테이너 재실행
stop 컨테이너 정지
attach 컨테이너 접속
exec 외부에서 컨테이너 내부 명령어 실행
rm 컨테이너 삭제
rmi 이미지 삭제
build 이미지 생성(Dockerfile 필요)

 

반응형

댓글