본문 바로가기
개발

[꿀팁] 애플리케이션 가상화 도커 (docker) 사용법 1

by 마스터누누 2017. 4. 18.
728x90
반응형


도커(docker)


기존의 가상 머신은 가상화 환경에 따라 CPU와 자원들을 이용하여 새로운 컴퓨터를 만드는것이라고 하면

리눅스의 컨테이너 기술을 이용하여 가상화를 하지 않고 프로세스만 격리해서 빠르게 실행시킨다.

기존의 시스템 자원을 공유만 하며, 가상 머신이 아닌 리얼 머신에서 돌아간다.


즉, 기존의 운영체제 안에서 프로세스를 격리시키는 기술이다.

-> 마치 가상머신을 설치한것과 동일한 효과를 낸다.


1. VM를 사용하면 용량이 많이 차지하고 느리나 docker는 좀 더 가볍고 빠른 환경을 가진다.

2. 성능상으로 98퍼센트이상 가상머신과 동일한 퍼포먼스를 보여줌

3. 자동 설치 스크립트를 지원해줌

4. 한개의 이미지로 여러개의 컨테이너를 실행가능


현재 도커는 리눅스 전용이며, 추후에 MS에서 지원계획을 발표했다.





설치하기




도커 홈페이지에 들어가 조금 스크롤을 내리면 다운로드 화면이 나온다.

운영체제에 맞게 다운로드 하자.

다운로드 후 설치를 진행한다.






터미널로 도커 버전을 확인해 본다.

정상적으로 설치 된 것을 확인할 수 있다.






미리 구성된 패키지 이미지를 도커에서 제공하고 있으므로

자신이 선호하는 패키지 관리자를 설치된 이미지를 받아오면 되겠다.

docker images명령어를 사용하며 현재 설치된 이미지를 확인할 수 있다.

현재 내 컴퓨터에는 다운된 이미지가 없다.








도커는 깃허브와 마찬가지로 도커 허브라는 것이 있는데

push 와 pull명령을 사용할 수 있다.

따라서 도커는 깃 허브의 공유기능을 사용하여 이미지를 공유할 수 있다.

(깃 - 깃허브, 도커 - 도커 허브)


명령어를 통하여 우분투의 이미지를 받아오자.

여기서 중요한점은 우분투를 받는 것이 아니라 우분투의 이미지를 받아 오는 것이라는점.

우분투의 패키지 매니저만 받아온다.

최신버전을 모른다면 docker pull ubuntu:latest 를 입력하면 자동으로 최신버전을 받아온다.






실행하기


 


다시 이미지 명령어를 통하여 이미지가 잘 받아졌는지 확인한다.

이미지에는 커널을 제외한 다양한 공유자원들이 포함되어있으므로 용량은 좀 큰편이다.

이미지에 대한 설치가 완료되었으므로 이를 컨테이너로 만들어야한다.

이미지와 컨테이너에 대한 구분은 편하게 다음과 같다고 생각하면 된다.


이미지 - 일종의 파일(실행파일)

컨테이너 - 이미지를 실행시킨 상태(프로세스 같은 개념)






 

도커에 이미지를 실행시켜 컨테이너로 만들기 위해서는  run 명령어가 사용된다.

이후 2개의 옵션을 걸고, 실행하고자하는 이미지의 이름과 메인 실행파일을 지정해준다.

옵션은 다음과 같다.


-i : 사용자가 입출력을 할 수 있도록 설정

-t : 가상 터미널 환경을 애뮬레이션 하겠다.(Bash를 띄워서 입출력이 가능함)


/bin/bash는 컨테이너에 있는 실행파일이며 메인 실행파일이다.

bash가 종료되면 컨테이너도 종료된다.






root@~~~~ 가 뜬것은 컨테이너안으로 들어왔다는 뜻이며 현재 docker안, 즉 우분투 os 안에 있다는 말이다.

ls명령어를 입력해보면 기존의 리눅스 환경과 동일한 모습을 볼수 있다.

바깥과는 다른 환경이지만 가상은 아니다.





 


업데이트도 정상적으로 된다.

컨테이너 안에 root 권한으로 접속 하였으므로 root를 붙여주지 않아도된다.





종료하기



도커 컨테이너의 종료는 exit 명령어를 사용하면 된다.

bash가 종료되면서 컨테이너도 같이 종료된다.

docker ps -a 명령어를 통해 도커의 프로세스를 확인해보면, 

bask에 대한 시작과 종료가 확인가능하다.








이번에는 컨테이너 안에 들어가는 것이 아니라 실행만 시켜 놓는 것을 해보겠다.

docker ps -a 를 실행시키면 방금전에 실행 하였던 컨테이너의 이름이 나온다(파란색)

이를 복사하여 docker start (이름) 을 입력 하면 컨테이너가 실행 되며, bash 접속은 되지 않는다. 

컨테이너 이름은 run에서 옵션을 부여하여 지정할 수 있으나 그냥 실행했다.


옵션을 부여하려면 docker run -d --name (이름) (이미지 이름) /bin/bash 를 입력한다.





 


이렇게 생성된 컨테이너에 다시 접속 하기 위해서는 attach 명령을 사용한다.

docker attach (이름)을 입력하고 엔터를 한번 더 누르면 bash에 접속할 수 있다.

exit를 입력하면 컨테이너와 bash가 종료되나, 컨테이너만 빠져 나오기 위해서는

Ctrl+P+Q를 입력한다(이는 bash의 단축키이다).

Ctrl+D는 Exit이다.





 


또한 외부에서 컨테이너를 종료시키기 위해서는

docker stop (이름)을 입력한다.

종료를 하더라도 컨테이너의 형체는 남아있는데

이를 지우기 위해서는 docker rm (이름)을 입력한다.

이렇게 하는 이유는 이미지 하나로 여러개의 컨테이너를 실행할 수 있기때문이다.


이렇게 생성된 컨테이너에서 다운받은 것들은 컨테이너 레벨에서 저장되며

이미지에 전혀 영향을 주지 않는다.

(가상머신은 이미지 레벨에서 저장이 된다.)



마찬가지로 도커의 이미지 중에서 필요없는 것을 지우기 위해서는

docker rmi (이름)을 입력한다.


아래는 출처 동영상이다.

https://www.youtube.com/watch?v=Bhzz9E3xuXY





반응형

댓글