Docker환경을 분리한 계기

이전까지는 i5 8265u, 8gb 의 성능을 가진 노트북 하나로 Docker, IDE, Postman,Source Tree 등 다양한 개발에 필요한 프로그램들을 돌리고 있었다. 개발을 하면서 동시에 구동하는 프로그램의 수가 많아 지면서 내 노트북은 램 사용량이 90%를 넘기면서 매우 버거워 하는 모습을 보여주었다.

Before

주인 잘못 만나 부대끼는 노트북이 안쓰러워 보였다. 사실 버벅이는 환경에서 개발을 해야하는 내가 가장 안쓰러웠던 것 같다. 그래서 램을 추가로 장착하려고 시도하였다. 그러나 내 노트북은 온보드 램인지라 램을 추가 할 수 없었다.

그럼에도 답답한 환경을 더 이상 참을 수 없어 온보드 램을 업그레이드 해주는 사설 업체가 있나 알아봤지만 쉽지 않았다. 이대로는 안되겠다 싶었고, 나는 다른 방법을 찾아야만 했다.

Docker 램 점유율

개발 환경에서 Dockermysql, redis, nginx등 여러 컨테이너를 구동해야 했고, 이 때문인지 Docker는 램에 있어 압도적인 사용량을 보여주었다. 여기서 Docker만 내 노트북에서 분리한다면 노트북이 덜 고생하지 않을까? 생각했다. 물론 개발환경이 쾌적해진다는 의미이기도 하다.

라즈베리파이 4

작업관리자

램 업그레이드를 못한다면 다른 PC환경에서 Docker를 돌리면 간단히 해결될 것 같았다. 이 생각으로 처음엔 미니PC를 알아보았다. 그러던 중 라즈베리파이의 개선된 성능이 눈에 띄었다. 라즈베리파이4는 4GB까지 램을 고를 수 있었다. 노트북과 라즈베리파이를 동일한 네트워크에서 사용하면 Docker환경만 노트북에서 분리하고 이전과 다름없이 사용할 수 있을 것이다. 그래서 나는 이 문제의 돌파구를 찾았다고 좋아했다. 이정도면 사이드 프로젝트들의 데모 서버정도로 까지 돌릴 수 생각했고 가격도 미니PC에 비해 매우 저렴해 바로 구매했다.

예상치 못한 문제

택배가 도착하자마자 바로 ubuntu server를 설치하고 설정을 시작했다. 여기서 예상치 못한 문제가 생기고 말았다. 내가 아무렇지 않게 사용하던 Docker Image들이 제대로 동작하지 않는 것이었다. 생각해보니 라즈베리파이의 CPU 아키텍쳐는 ARM이었던 것이다. 계속 사용해오던 일부 x86용 도커 이미지는 당연히 제대로 동작할리가 없었다. 다행히 cpu 아키텍쳐가 다름을 알게된 후로는 어렵지 않게 해결할 수 있었고 라즈베리파이와 ARM v8 64아키텍쳐를 지원하는 이미지들을 어렵지 않게 찾을 수 있었다.

결론

성공적이다.

Before

평소 개발할때 처럼 이것 저것 띄워놓고 사용했음에도 버벅이지 않고 쾌적하게 개발할 수 있게 되었다. 이 글을 통해 공유하고 싶은 것은 크게 두가지이다.

본인이 Docker를 사용하고 개발PC가 버거워 하지만 이 글의 경우처럼 업그레이드를 할 수 없는 경우라면 라즈베리 파이를 이용해 보는것은 좋은 선택이라고 생각한다.

사실 두번째가 더 중요하다. 기존의 x86 기반 PC에서 사용하던 일부 Docker 이미지들은 사용할 수 없을 수 있다는 점이다. 이 외에도 다른 문제들이 있을 수 있지만, 적어도 DockerHub에서 Docker 이미지가 지원하는 아키텍쳐의 종류를 확인해 볼 수 있으니 꼭 확인해 보고 결정했으면 좋겠다.

만약 ARM아키텍쳐를 지원하지 않는다면 대안을 찾아 볼 수 도 있다. rpi-arm- 같은 접두사를 붙혀 검색해 보면 다양한 대안을 찾아 볼 수 있을 것이다. 내 경우에는 node.js 에서 npm install 부터 문제가 발생했는데, official 이미지의 alpine 버전을 이용함으로써 해결할 수 있었다. 이렇듯이, 본인이 사용하는 Docker이미지가 지원한다면, Raspberry Pi를 이용해 개발 환경을 쾌적하게 할 수 는 있으나 Docker 이미지가 라즈베리파이를 지원하지 않을 수 있다는 점은 명심해야 한다.