프로필사진
docker vs virtual machine

2019. 12. 24. 17:19🔴 ETC/Docker

300x250

Docker ≠ Virtual Machine

docker컨테이너는 VM처럼 하나의 온전한 서버를 제공하는 것이 아니라
명령을 실행하는 '환경'만 제공하고 그 명령을 실행할 뿐


https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%B2%98%EC%9D%8C-docker-%EC%A0%91%ED%95%A0%EB%95%8C-%EC%98%A4%EB%8A%94-%EB%A9%98%EB%B6%95-%EB%AA%87%EA%B0%80%EC%A7%80/

 

개발자가 처음 Docker 접할때 오는 멘붕 몇가지 | Popit

이번 글은 Docker의 개념 보다는 Docker를 처음 접하게 되었을 때 혼란스러웠던 내용을 정리한 글이다. Docker 컨테이너를 사용하는 용도는 여러가지가 있겠지만 이 글에서는 개발자가 만든 애플리케이션을 Tomcat과 같은 애플리케이션 서버에 탑재해서 배포하는 경우 겪게 되었던 내용이다. Docker는 Virtual machine이 아니다! 처음 docker를 실행할 때 다음과 같은 명령을 실행하면 우분투 서버가 실행된다고 생각했다. 즉,  Vir

www.popit.kr

도커를 사용하면서 VM과 비슷하다고 생각했는데
둘은 다른 개념이라는 것을 위에 블로그 글을 보고 알았다.

글을 읽으며 이해한 내용을
간단히 요약해보고자 한다.


$ docker run --name ubuntu_Test ubuntu

ubuntu image가 없기 때문에 'run'을 하면
이미지를 다운받고 실행까지 한다.

최신버전의 우분투 이미지를 내려받은 모습

$ docker ps -a

'run'을 했지만 아무것도 실행되지 않는데,
위의 명령어를 통해 현재 컨테이너들의 상태를 확인해보면
우분투의 status가 'exited 10 seconds ago'라고 뜬다.

그리고 더 자세히 보면,
command에 부분에
"/bin/bash"라고 쓰여져 있다.

여기서 우리는 ubuntu컨테이너를 실행하면
우분투 서버가 실행되는 것이 아니라
"/bin/bash"가 실행되는 것 뿐이라는 것을 알 수 있다.

--> 이것이 Docker컨테이너와 VM 컨테이너의 가장 큰 차이점!!!

"Docker컨테이너는 단지 명령만 실행하고 그 결과만 보여주는 기능을 수행한다"

앞에서 run을 했지만 아무것도 실행되지 않은 이유는
우분투의 이미지에서 설정된 default실행명령(/bin/bash)을 실행하고
그 결과를 출력한 뒤 종료했기 때문이다.

이를 확인하기 위해 "$ docker rm <id or name>"으로
해당 도커 컨테이너를 지우고 난 뒤 "env"명령을 실행해봤다.

$ docker run --name ubuntu_Test ubuntu "env"

시스템의 환경 정보를 출력해줬다.
다시 도커 컨테이너들을 조회해보면
"env"가 실행되었다는 것을 확인할 수 있다.


우분투 bash shell에서 명령 실행해보기

$ docker run --rm -it ubuntu /bin/bash

이번에는 "--rm"옵션을 주어서 컨테이너가 종료되고 자동으로 삭제되게끔 했다.

exit

shell에서 exit를 명령하면 shell에서 나오고 컨테이너는 중지된다.

300x250

'🔴 ETC > Docker' 카테고리의 다른 글

docker container lifecycle  (0) 2019.12.24
[macOS] 도커 설치&실행, 이미지 pull, 포워딩&마운트  (0) 2019.12.24
docker란?  (1) 2019.12.24