2019. 12. 24. 17:19ㆍ🔴 ETC/Docker
Docker ≠ Virtual Machine
docker컨테이너는 VM처럼 하나의 온전한 서버를 제공하는 것이 아니라
명령을 실행하는 '환경'만 제공하고 그 명령을 실행할 뿐
도커를 사용하면서 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에서 나오고 컨테이너는 중지된다.
'🔴 ETC > Docker' 카테고리의 다른 글
docker container lifecycle (0) | 2019.12.24 |
---|---|
[macOS] 도커 설치&실행, 이미지 pull, 포워딩&마운트 (0) | 2019.12.24 |
docker란? (1) | 2019.12.24 |