본문 바로가기

MINIBEEF/DOCKER

#1 Docker 설치

Code Edit By : https://carbon.now.sh/

1) Docker?

 Docker는 쉽게 말하자면 가상화 플랫폼이다. 이미 널리 알려져있는 VMware, VirtualBox와 다른 점은 Docker는 파일 시스템을 가상화하는데 컨테이너의 개념을 도입했다는 것이다. 컨테이너는 화물을 싣고 이를 다른 물건들과 섞이지 않도록 하는 용도를 할 뿐만 아니라 다양한 운송수단을 이용해서 다른 지역으로 안전하게 이동시킬 수도 있다. Docker의 컨테이너도 마찬가지로, 다양한 프로그램이나 실행환경(윈도우, 리눅스와 같은 OS를 포함)을 그 안에 구축하고 안전하게 보호하며 Docker Hub라고 하는 플랫폼을 통해 다른 사용자에게 호환성 문제 없이 배포할 수 있도록 만들어졌다.

 조금 더 자세히 설명하자면 docker의 컨테이너는 대상 프로세스가 완전히 격리된 공간에서 동작할 수 있도록 해주는 기술이다. VMware나 VirtualBox에서 사용하고 있는 기존 가상화 방식은 호스트 OS(VM을 실행시키는 PC) 위에 가상화할 OS 전체를 올리기 때문에 상당히 무겁고 느려 잦은 오버헤드(Overhead)가 발생한다는 단점이 존재한다(이 경우, 마치 한 대의 컴퓨터로 여러 대의 리소스를 감당하는 것과 같은 자원이 소모된다). 하지만 Docker Container의 경우, 단순히 프로세스만 격리하는 방식을 채택했기 때문에 성능적인 손실을 극도로 최소화 하였다. 메모리 상에 모든 OS가 올라가는 것이 아니라 게스트 OS가 필요한 프로세스에 대한 자원을 Hyperviser에게 요청하는 형태 즉, 반 가상화를 사용했기 때문에 VM이나 VirtualBox와 같은 전 가상화 플랫폼과는 비교도 안되게 리소스를 조금 먹는다.


2) Docker Image

 Docker Image는 Docker를 이용하기 위해서 꼭 알아야하는 개념이다. Docker에서의 Image란 컨테이너 실행에 필요한 모든 파일 및 설정 값을 포함하고 있는 것이다. 예를 들어, 우리가 Docker를 이용해 Ubuntu 16.04 운영체제를 갖는 컨테이너를 만들고 싶다면 Ubuntu 16.04 이미지를 구해서 실행시키기만 하면 된다(이 때 컨테이너를 만드는 시간은 1초도 안걸린다..). 또한 이 경우 Ubuntu 이미지를 구하는 것도 굉장히 쉬운데, Docker Image를 등록하거나 다운받을 수 있는 Docker Hub가 있다.


3) Install Docker(Linux)

0> sudo -s

 참고로 docker는 root 권한에서만 동작한다. docker 이용 전에 sudo -s를 해서 root로 바꿔주자

1> Linux Docker 설치 스크립트 실행

 위 명령을 입력했을 때 Docker 설치에 필요한 모든 요소와 설정을 자동으로 해준다.

2> Image 실행

docker run ubuntu:16.04

 Docker Container를 실행하기 위해서 docker run 명령을 사용하였다. run 명령을 내릴 경우 먼저 로컬 저장소에서 해당 이미지 파일(ubuntu 16.04)가 존재하는지 찾고, 없을 경우 Docker Hub에서 다운로드 받아와 실행시킨다. 이 때 생성된 컨테이너는 아무 행동도 지시받지 않았기 때문에 바로 종료된다(위 예시에서 docker ps 명령을 날렸을 때 ubuntu 16.04의 STATUS가 Exited인 것을 볼 수가 있다. docker ps는 컨테이너의 상태를 알려주는 명령). 그럼 이번엔 실제로 컨테이너를 생성하고 그 안으로 들아거는 것까지 해보자.

 

docker run --rm -it ubuntu:16.04 /bin/bash

 컨테이너 내부에 들어가기 위해 bash 쉘을 실행하고 키보드 입력을 위해 -it 옵션을 준다. 추가적으로 프로세스가 종료되면 컨테이너가 자동으로 삭제되도록 --rm 옵션도 추가한다. 위 예시를 자세히 보면 PC의 이름이 ubuntu에서 dd1209115f80으로 변한 것을 볼 수 있다. 이는 현재 실행된 컨테이너의 ID와 일치한다.

 

 컨테이너에서 나가고싶다면 기존 리눅스 명령어처럼 exit을 날리면 된다. 


4) 기본 명령어

docker ps : 현재 실행중인 컨테이너 목록 출력

-a, -al : exit된 컨테이너도 출력

 

docker stop CONTAINER1 CONTAINER2 CONTAINER3... : 컨테이너 중지(띄어쓰기로 여러 개 종료 가능)
docker rm CONTAINER1 CONTAINER2 CONTAINER3 : 컨테이너 삭제
docker images : 이미지 목록
docker pull NAME : Docker Hub에서 이미지 다운로드
docker rmi IMAGE : 이미지 삭제

끝.

 

'MINIBEEF > DOCKER' 카테고리의 다른 글

#2 Docker로 Apache 써보기(+디렉토리 공유)  (0) 2020.02.10