가상 머신이냐 아니면 진짜냐...
on
솔직히 내 컴퓨터 사양이 좋으면 내가 가진 컴퓨터 안에 여러 개의 VM을 두고 굴리고 싶은 생각이 드는 게 일반적이라고 본다.
내가 팬대믹이 오기 직전쯤에 나름 고사양 PC를 한 대 만들어서 host OS를 MacOS로 하고 윈도우즈와 리눅스를 둘 다 굴리는 생각을 하고 있었는데, 사실상 AMD CPU로 맞추는 통에 이게 잘 되진 않았지만, 윈도우즈와 리눅스에서 그런 식으로 해봤던 기억이 있다.
일단 한 대의 컴퓨터에 전부 다 있으니까 편할 것 같지만 사실 별로 그렇지 못했다. 이게 나름 쉬울 것 같지만 또 그게 그렇지 만도 않고.
왜? VM으로 가게 되면 독립적인 PC가 가상으로 하나 더 생기는 것 같지만, 예전에 실제 시스템을 랜으로 묶어서 쓰는 것과 또 다른 상황이 되기 때문에 이것 저것 전부 적응하다보면 차라리 그냥 실물 시스템을 하나 더 가져다 두고 랜으로 파일 시스템을 공유하는 것이 훨씬 나을 수 있다. 우리가 여기까진 비교적 익숙하다. 같은 방법을 가상머신에 적용하면 되는 것도 있지만 잘 안되는 것도 있고 되게 하려면 꽤 많은 노력을 기울여야 할 때가 더 많다. 실제로 별로 대단할 것도 없는데.
그렇다. 나는 늙은 사람이라서 가상머신을 좋아하긴 하지만 정작 급할 때 쓰기엔 이게 그다지 만만하지 않다는 걸 안다.
Docker도 마찬가지다. Docker도 잘 생각해보면 가상머신이라고 대놓고 이야기 하진 않지만 유사한 개념을 이용한다. 파일 시스템은 공유하지만 가상머신 같을 때도 있고 아닐 때도 있다. 사용자가 보기엔 매한가지 같지만 가상머신으로 혹은 그냥 chroot처럼 될 때도 있고 그렇다.
그래서 docker를 쓰기 유리할 땐 그렇게 하지만, 그게 아니면 그냥 별도의 머신에서 별도의 OS가 돌게 하고 그냥 docker를 remote로 쓰는 것도 괜찮다. windows를 remote로 쓰는 것도 괜찮고. remote에 있는 VM을 쓰는 것도 괜찮고.
왜 이런 이야기를 하냐고?
아무 생각 없이 MacOS에 QEMU로 linux VM을 만들고 보니 파일시스템을 공유하는 게 문제가 되서 때려쳤다. guest VM이 host의 NFS share를 mount하는 게 tcp port 때문에 문제가 된거다. 이것도 극복하는 방법이 있다. 그러니까 가상으로 network interface를 만들어놓고 거기에 guest VM을 물리게 하면 된다. 그렇지만 또 이렇게 저렇게 지저분해지니까 하지 않은 거다.
이걸 쉽게 하자고 그냥 리모트 머신을 썼으면 쉽게 할 수 있는 걸 괜히 반나절을 날렸다.