드디어 docker를 제대로(?) 쓰게 되었다..
on
내가 알고 있는 docker의 용도는 다음과 같다.
1) 특정 버전, 특정 distro의 linux를 골라서 써야 할 때 해당 컨테이너를 받아서 필요한 용도에 맞춰 쓰고 다음을 위해 관리/보관한다. : 하나의 container가 리눅스 가상머신의 역할을 함 2) 리눅스의 특정 기능을 잘 설정해놓은 컨테이너를 받아다가 필요한 용도에 맞춰서 사용한다. : 하나의 container가 하나의 응용 프로그램 노릇을 함
docker를 꽤 오랜동안 사용해오고 있지만, 대부분 docker를 사용한 이유는 위에 정리한 첫번째의 경우, 즉, 오래전에 나온 linux distro를 사용하기 위해 그 이미지를 받아와서 그 위에 내게 필요한 이것 저것을 설치해놓고 필요할 때마다 docker start를 통해 사용하는 정도에서 머물렀다. 사실 2)의 기능이 있는 것도 잘 알고 그 이점도 알고 있었지만, 뭐랄까 배보다 배꼽이 큰 것 아닐까 하는 생각에 꺼려했었다.
이번에 IKEv2를 사용하는 strongswan을 설치하느라 시간까먹고 있다보니 그냥 docker conatainer를 속는 셈치고 써봤는데, 거의 내가 제대로 설치했다면 소비했어야 할 시간의 1/10도 안되는 시간으로 쉽게 설치했고 컨테이너의 형태로 되어있어서 자질구레한 쓰레기들이 남지 않으니 깔끔하고 편했다.
사실 docker container를 불러다 쓰면 해당 OS의 이미지가 파일 시스템/이미지를 어느 정도 먹어들어가고, 또 그것을 실행하는데 몇 단계가 추가되는 손실이 있긴한데, 사실 이것만 빼면 뭔가를 설치하는데 들어가는 노동/시간/스트레스는 크게 줄일 수 있다. 컴퓨터가 좋아졌으니 docker container를 불러다가 응용 프로그램을 실행하는데 들어가는 희생쯤이야 아무렇지도 않다는 뜻이다. 설치/관리/유지 보수하는데 들어가는 노력과 시간을 따지면 훨씬 더 큰 이익일 수도 있다고 본다. 아마도 그 때문에 docker 세계가 이렇게 흥한 것이기도 하고.
가만 생각해보면 나는 몹시 엣날 사람이라 내가 사용하는 daemon이나 service들은 내가 build해서 또 셋업해서 올려야 제맛, 그리고 틈만나면 그것들을 관리하는 것이 당연하다 생각을 해왔는데, 사실 어린 친구들은 그런 골치 아픈 거 할 이유도 없고 그렇게 낭비할 시간도 없다고 생각해서 docker container를 쉽게 가져다 쓰는 것 같다. 말이 docker일 뿐이지 nodejs라든가 python의 community에서 만들어놓은 모듈들을 가져다 쓰면서 뭐든 손쉽게 개발하는 시절이다. 세상이 바뀐 거니까 그렇게 따라가야지 맞는 것이겠지 싶다가도 쓸데없는 뇐네 본능이 발동하면 또 native 설치를 감행하고 그러는 거다.
사실 요새 alpine linux는 워낙에 덩치가 작아서 간단한 기능을 수행하는 docker container에 넣고 쓰긴 그만이다. 이것은 대충 들여다보면 libreswan에 이런 저런 설치용 스크립트를 잘 만들어놓은 것인데, MacOS나 iOS에서 IKev2를 쓰자면 이보다 더 좋은 방법이 없지 싶을 정도로 좋다. 더구나 arm용 컨테이너도 잘 되어있어서 좋고. 이 뿐인가 그냥 docker container를 실행할 virtual machine을 꾸릴 때도 alpine linux가 딱이다.
사실 OpenWRT로 아예 router에 넣어서 쓰려고 했었는데, 내 입맛에 맞춰어 설치하기 쉽지 않았고 또 router의 CPU는 docker를 돌릴만 할 수준이 되지 못해서 Rpi4에 넣고 쓰는데 시스템 부하도 별로 없는 듯하고 쓸만하다. 무엇보다도 iOS/MacOS에서 너무 잘 돌아간다. 안드로이드는 아직 안해봤지만 안해봐도 될 것 같고.
다만 문제를 하나 지적하자면 VPN으로 잡히는 host의 address가 local의 address map에 잡히는 녀석이 아니라 bonjour가 안 듣는다는 거다. 이를테면 iTunes용 library에 접속을 못하는 거지. 물론 강제로 밀어넣으면 되긴 한다만. 아직 다 써보지 못해서 알 수는 없지만 나름 요긴할 것으로 본다.
어쨌든 요약하면 어떤 서비스를 새로 추가하고자 할 때 설치하는 게 너무 복잡하고 사전학습해야 할 것들이 너무 많은 경우, 기왕이면 alpine linux로 꾸며놓은 docker container를 받아서 설치 하면 여러 가지로 편리하다라고 할 수 있을 것 같다.
특히나 strongswan은 제대로 설치하기 쉽지 않은데 docker container가 많은 짐을 덜어주었다. 돌기도 매우 깔끔하게 돌아가고 있고. 귀찮은 로그 봐가며 설정하느라 땀 뺄 이유가 없다. 세상 정말 좋아졌다.