December 28, 2016

odroid-u2와 docker, openvswitch

예전에 구매해서 지금까지 잘 쓰고 있는 odroid-u2가 있다. 개인 블로그나 위키등을 담는 작은 서버였는데, 이런 간단한 용도로 쓰기에 매우 좋고 성능이 뛰어나서 큰 불만이 없이 지금까지 잘 사용하고 있다.

그럼에도 좀 아쉬운 점이 있었던 것이 몇 가지 있었다. 첫 번째로, 하드커널에서 지원하는 이미지로는 우분투 14.04만 설치가 가능했던 것, 두 번째로는 커널 버전이 너무 낮은 것이었다. 더구나 커널 버전이 낮아 도커 최신버전이 설치되지 않는다는 것이 매우 안타까웠는데, 일부러 낮은 버전의 도커를 설치하려고 해도 뭔가 최신 기능을 쓰지 못하는 그런 문제점이 있었다.

구글에서 여러가지를 찾아본 결과 u2에서 사용할 수 있는 커널은 여기저기서 찾아볼 수 있었는데, 실제로 내가 사용할 수 있는지는 컴파일을 직접 해 보고 알아야 했다. 같은 커널 컴파일 옵션을 주더라도 이쪽 커널 소스에서는 되는데 저쪽 커널 소스에서는 안되는 일이 있었기 때문이었다. 그래서 제대로 되는 커널을 찾고, 적당한 커널 컴파일 옵션을 주는 것에서 굉장히 시간이 오래 걸렸었다.

특히 부팅이 안 되는 경우 이게 도대체 뭐가 문제인가를 알 수가 없었던 것이 제일 큰 문제였다. 부팅 자체가 안되는건지, 부팅은 됐는데 네트워크가 안되는건지… 에러를 확인할 수 없으니 어디를 고쳐야 하는지를 모른다. 그래서 며칠 고생하다 결국 usb uart module을 구매해서 사용하니까 속도가 좀 붙기 시작했다.

도커를 사용하기 위해 check-config.sh 를 사용하여 최대한 많은 내용을 담을 수 있도록 커널 컨피그를 수정하고 수정해서 컴파일을 완료한 뒤, 기존 커널을 교체하니 다행스럽게도 부팅에 문제가 없었다. 이제 도커를 사용할 수 있다! 이때 사실 좀 감격했었다. 와, 되기는 되는군.

이번엔 서버에 최소한의 패키지를 설치한 채로 시작을 하고 싶었다. 그래서 ubuntu 16.04를 설치하기로 했다. 이것도 꽤나 골치아픈 일이었는데, 다행스럽게도 qemu-user-static이라는 패키지를 이용해서 어느정도 수월하게 설치할 수 있었다.

이렇게 해서 오드로이드 u2에 도커 최신 버전과 우분투 16.04를 사용할 수 있게 되었다. 거기에 도커 기본 브릿지가 아니라 openvswitch를 사용하여 만든 브릿지에 컨테이너를 붙일 수 있게 되었는데, QoS를 걸 일도 없고 딱히 엄청 필요한 것도 아니지만 쓰라고 갖다 주는 것 이외에 뭔가 커스텀한 레벨로 도커를 사용할 수 있다는 것이 너무 좋다.