TIL #36 - 윈도우OS유저의 Docker 사용기
* 본 포스팅은 docker 사용기만을 다루고 있습니다.
도커에 대한 정확한 지식을 알고자 하신다면 다른 블로그를 참조해주세요!
Docker!
도커를 사용하게 되었다.
계기는 오라클을 깔고 싶지 않아하던 내게 동기 분께서 도커를 추천해주셔서 사용하게 되었다.
먼저 도커는 위의 그림이 도커가 어떻게 작동하는지 설명해주는데,
도커 웹페이지에서는 이렇게 설명한다.
도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에서는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.
나는 도커로 오라클을 사용하고 싶기 때문에 오라클 이미지를 도커에 다운 받아서 사용한다.
이 '이미지' 라는 개념이 처음에 이해가 가지 않았는데 그냥 가상화된 어떤 프로그램을 말하는 것 같다.
이 이미지를 설치함으로써 내가 그 프로그램을 사용할 수 있게 된다.
우선 docker desktop을 깔고 회원가입을 해준다.
회원가입할 때 비밀번호 확인 없이 비밀번호를 한큐에 입력하는게 조금 후덜덜했다.
회원가입을 하지 않으면 후에 cli 창에서 이미지를 설치할 시 로그인을 하지 않았다는 에러가 발생하기 때문에 해주었다.
나는 Oracle xe 11g를 깔았는데 cli 창에서 이렇게 입력해주면 설치가 완료된다.
$ docker search oracle-xe-11g
$ docker pull jaspeen/oracle-xe-11g
만약 내 도커에 설치된 image 들을 확인하고자 한다면 cli 창에 아래의 명령어를 입력한다.
$ docker images
혹은 docker의 dashboard를 본다.
cli 명령어 없이 dashboard에서 실행하고 멈출 수 있다.
여기까지가 도커를 사용하는 방법이고,
본격적으로 docker를 사용하면서 겪었던 이야기를 해보자면..
우선 나는 윈도우OS를 사용하고 있다.
그런데 도커를 추천해주신 동기분은 맥OS 유저이기 때문에 오라클 때문에 도커 사용이 불가피 했던 걸로 보인다.
그리고 도커는 리눅스 환경에서 돌아가는 프로그램이기 때문에 맥OS 를 사용하는 동기 분은 무리없이 사용했다.
문제는 윈도우OS는 도커를 돌릴 시 윈도우OS가 hyper-v 라는 프로그램을 돌려
가상머신으로 리눅스 운영체제를 실행하게 된다.
Microsoft 홈페이지의 설명에 따르면
가상화를 사용하는 이유, 이전 버전의 Windows 또는 Windows가 아닌 다른 운영 체제가 필요한 소프트웨어를 실행합니다.
즉 도커는 리눅스 위에서 돌아가는데 윈도우는 리눅스가 아니기 때문에 윈도우가 도커를 사용하기 위해서 리눅스를 Hyper-v 라는 프로그램을 통해 가상화된 리눅스를 실행해 도커를 실행한다는 것이다..
그래서 도커를 사용하면 메모리를 엄청 먹는데 당장 도커를 켠 상태에서 작업 관리자를 켜보면
Vmmem 이라는 프로그램이 메모리를 다 차지하고 있는 걸 볼 수 있다.
이 Vmmem이라는 프로그램은 뭔진 모르겠지만 Hyper-v 라는 가상화 프로그램을 켜면 vmmem 이라는 프로그램이 가상머신에 의해 cpu와 메모리를 합성하는데 (synthesize) 그 과정을 하는 프로그램이라고 한다.
(사실 뭔지 잘 모르겠다)
여하튼 Hyper-v 가 켜지면 함께 켜지는 프로그램임에는 확실하고 이 프로그램을 멈추게 되면
도커 때문에 켜진 가상머신이 꺼지게 된다.
자세한 설명은 아래의 홈페이지에서 확인할 수 있다.
What is this vmmem program that is using up all my CPU and memory? | The Old New Thing
That's where your virtual machine resource usage goes.
devblogs.microsoft.com
따라서 윈도우 환경에서는 도커를 사용하는건 꽤 부담이 있다.. 는 결론이다.
그래도 어떡하나.. 열심히 셋팅했으니 써야지 하는 생각으로 사용하고 있다.
다만 톰캣을 사용하고 있기 때문에 도커의 포트 번호를 변경하는 작업을 해야한다.
아무튼 새로운 것을 배우는 건 즐겁다.
그만큼 힘들긴 하지만, 이런 것도 있구나 하는 생각과 함께 내가 아는 세상이 좀 더 넓어지는 것이니까.
이 자리를 빌려 도커를 소개해주고 소개해준 대가(?)로 열심히 셋팅및 A/S를 도와주신 동기분께 감사드린다.