Docker for Mac Edge 채널에 Mutagen 기반 캐싱 기능 추가
호스트, 컨테이너 간의 파일 공유시 퍼포먼스 향상

들어가며

도커 데스크탑 포 맥Docker for Desktoup Mac의 엣지 채널 2.3.1.0에 뮤타젠Mutagen 기반의 캐싱 기능이 추가되었습니다. 도커 데스크탑 포 맥은 안정 버전이 릴리스되는 스테이블 채널과 실험적 기능이 포함된 엣지 채널로 나뉘어져있습니다. 이번에 뮤타젠 기반의 캐시는 실험적 기능으로 엣지 채널에 포함되었습니다.

도커 데스크탑 포 맥의 퍼포먼스 문제는 이전부터 계속 논의되어 오고 있습니다. CPU를 과도하게 사용하는 문제를 다룬 이슈 docker/for-mac#3499를 비롯해 파일 시스템 관련된 파일 시스템 퍼포먼스 관련된 이슈들도 마땅히 해결책이 없는 상태였습니다. 특히 개발 환경의 소스 코드를 호스트와 컨테이너 사이에서 공유하는 경우 퍼포먼스가 현격히 떨어집니다. 파일 시스템 퍼포먼스에 대한 대안 중 하나로 베이그런트Vagrant + 버추얼박스VirtualBox + 뮤타젠Mutagen을 사용해보려는 시도가 있었습니다만, 이번 엣지 릴리스로 뮤타젠 기반의 파일 캐싱을 도커 포 맥에도 포함되었습니다.

결론부터 이야기해보면 소스 코드를 호스트와 컨테이너 사이에 소스코드를 공유해서 개발을 하는 경우 아주 큰 성능 향상을 얻을 수 있습니다. 44BITS의 메인 프로젝트인 Pages의 경우 루비 온 레일스Ruby on Rails 기반으로 도커를 기반으로 개발환경이 구축되어있습니다. 개발 서버에 execrails c(레일스 콘솔)을 실행하는 경우 기존에는 30초 이상의 시간이 걸렸는데 😱, 뮤타젠 활성화 이후에는 5초 정도가 걸립니다. 원래 레일스 콘솔 실행은 이 정도 걸립니다 😅. 정확한 비교는 해보지 않았지만 초기 서버 실행도 압도적으로 빠릅니다. 버추얼 박스 기반에 뮤타젠을 도입한 글(일본어)을 봐도 5-10배 정도 성능 향상이 된다고 합니다.

도커 데스크탑(Docker Desktop) 엣지 채널 설치

뮤타젠 기반의 캐싱을 활성화하려면 엣지 채널을 설치해야합니다. 뮤타젠 캐싱은 2.3.1.0 버전에 포함되었으며, 이 버전이나 이후 버전을 다운로드 해서 설치합니다. 릴리스 페이지에 다운로드 링크가 있습니다. *

* 도커 엔진Docker Engine 버전과 도커 데스크탑Docker Desktop의 버전이 혼란스러울 수 있습니다. 2020년 6월 현재 2.x 대는 도커 데스크탑의 버전이며, 19.x 버전은 도커 엔진의 최신 버전입니다. 도커 데스크탑은 최신 버전의 도커 엔진을 포함하고 있습니다.

엣지 채널은 스테이블 채널과 동시에 사용할 수 없는 것으로 보입니다. 데이터도 유실 될 수 있으니 중요한 내용이 있다면 미리 백업해두시고 진행하는 것을 추천합니다. 또한 뮤타젠 기반의 캐싱 기능 역시 안정화되어있지 않은 상태입니다. 더 자세한 내용은 docker/for-mac의 이슈들을 참고해주세요.

엣지 채널을 설치하면 도커 데스크탑에 대하여About Docker Desktop 메뉴에서 엣지 채널임을 확인할 수 있습니다.

도커 데스크탑 엣지 채널이 설치된 것을 확인할 수 있습니다

뮤타젠(Mutagen) 기반 캐싱 활성화

Preferences -> Resources -> FILE SHAREING 메뉴로 이동합니다. 맨 아래에 적용하고자 하는 프로젝트의 전체 경로를 입력하고 + 아이콘을 클릭합니다. 그 다음 새로 추가된 경로 중간의 토글 스위치를 클릭해서 온으로 바꿉니다. 토글 값이 Not cached에서 Ready로 변경됩니다. Apply & Restart 버튼이 활성화 되면 클릭해서 도커 엔진을 재실행합니다.*

* 현재 최신 버전의 스테이블 채널 2.3.0.3에는 이 토글 버튼이 없습니다.

파일 공유 메뉴에서 뮤타젠 기반 캐싱을 활성화

이제 해당 디렉터리를 docker run할 때 -v로 연결해주기만 하면 됩니다. 공식 예제를 봐서는 이외의 추가적인 설정은 필요하지 않은 것으로 보입니다.

파일 퍼미션 문제

현재 캐싱 적용시 파일 퍼미션이 변경되는 이슈가 있습니다.

다시 보는 2018 한국의 주요 개발 / 테크 컨퍼런스들

🗒 기사, 2018-12-21 - 올해도 국내에서 다양한 컨퍼런스들이 열렸습니다. 그 중에서 영상으로 다시 보기 가능한 컨퍼런스들을 소개합니다. AWS 서울 서밋 2018, 넥슨 개발자 컨퍼런스, 오픈인프라 데이, 파이콘, if (kakao) dev, 업비트 개발자 컨퍼런스, 데뷰, 구글 클라우드 서밋, 프론트엔드 컨퍼런스 코리아, 렛츠 스위프트, AWS 데브데이.

도커 레지스트리(Docker Registry): 프라이빗 도커 이미지 저장소 - 설치부터 S3 연동까지

🗒 기사, 2014-05-08 - 도커(Docker)의 이미지는 도커 레지스트리(Docker Registry) 서버로 공유하는 게 가능합니다. 이 글에서는 프라이빗 도커 이미지 저장소 서버 직접 설치하는 방법과 AWS S3와 연동해서 사용하는 방법을 소개합니다.

파이콘 한국 2020, 코로나19 영향으로 온라인으로 개최할 예정

🗞 새소식, 2020-03-31 - 한국에서 열리는 가장 큰 오픈소스 커뮤니티 행사이자 개발자 행사인 파이콘 2020은 8월 13일부터 16일까지 코엑스에서 열릴 예정이었으나, 3월 30일 온라인 개최를 발표했습니다. 또한 펜실베니아에서 열릴 예정이었던 파이콘 US 2020도 취소를 발표했습니다.