올해 7월 27일 부터 9월 21일 까지 우분투 한국 커뮤니티에서 연 도커 스터디에 참여 했었는데요. 이 글을 통해 스터디에 왜 참여하게 되었고, 스터디를 통해 무엇을 배웠는지 후기를 한번 기록해 보고자 합니다. 주로 제가 기억에 남는 것 위주로 해서 작성하고자 합니다.

스터디에 참여한 계기

제 기억으로… 우분투 커뮤니티에서 올해(2016년) 초에 도커 스터디를 하겠다고 작년(2015년) 말 즈음 부터 말을 했던 것 같습니다. 저는 우분투 커뮤니티 쪽에서 도커 스터디 하겠다고 하기 전 부터 도커에 관심을 가지고 있었습니다. 도커 기반의 PaaS 툴인 도쿠(Dokku) 를 사용하고 있었는데, 쓸때마다 뭔가 설정이 꼬이는 느낌이 있고, 조금 불안정 하기도 하고, 도쿠로 할 수 있는 것이 좀 제한적이였습니다. 그래서 도커 쓰는법을 공부해서 한번 써 보고 싶었습니다. 때마침 우분투 커뮤니티에서 도커 스터디를 계획 중이라 해서 참여하려 했습니다. 언제 쯤 하냐고 물어 봤는데, 물어 볼 때 마다(?) 대부분의 대답은 아직 일정이 안 잡혔다고 하더군요. 그래서 틈 날때마나 언제 하냐고 계속 물어 봤는데, 올해 여름으로 일정이 잡히더니(?), 저보고 스터디 그룹을 이끌라고 하더군요(?), 그래서 어쩌다 보니 또다른 스터디 구성원 한 분과 함께 스터디 리더가 되었고, 스터디는 그렇게 시작 되었습니다.

스터디 개요

  • 기간 : 2016년 07월 27일 ~ 2016년 09월 21일
  • 모임 시간 : 매주 수요일 오후 7시 30분 ~ 오후 9시 30분
  • 장소 : 토즈 홍대점
  • 서적 : 가장 빨리 만나는 Docker - 원고가 온라인에 공개된 책 입니다.

1주차 모임

1주차 모임때는 스터디 구성들이 처음 만나므로, 만나서 서조 간단히 자기소개를 하고, 앞으로의 스터디 계획을 잡았습니다. 약 8주정도 스터디를 진행 하는데, 5주차 까지는 책으로 공부하는 것을 모두 마치기로 하고, 6~8주차는 도커에 대해 다른 부분을 공부해 보기로 했습니다. 계획은 대략 아래처럼 잡혔습니다, 계획 잡은 후에는, 각자의 기기에 도커 설치를 해 봤습니다. 스터디 계획은 이후 조금씩 변경 되었는데, 저희 모임에서는 최종적으로 아래와 같은 내용들을 스터디 기간동안 진행 했습니다.

  • 1주차 : 1 ~5장 Docker 살펴보기
  • 2주차 : 5 ~7장
  • 3주차 : 8 ~9장
  • 4주차 : 10 ~ 15장
  • 5주차 : 16 ~ 20장
  • 6주차 : 도커 컨테이너로 안드로이드 앱 돌리기
  • 7주차 : 심장훈님의 LXD 와 도커 비교
  • 8주차 : 도커 네트워크, 도커 스토리지, 도커 시큐리티(Linux Capability)

2주차 모임

미리 공부 해 온 5~7장의 내용을 다뤘습니다. 주로 도커의 각종 명령어와, 도커 활용하기, 데이터 볼륨 등에 대해 다뤘습니다.

  • 데이터 볼륨을 이용하면 컨테이너 안의 특정 디렉터리를 호스트에 노출 할 수 있고, 해당 디렉터리 안의 파일을 호스트에서 쉽게 수정이 가능합니다.
  • 설정값 같은것을 고치거나, 컨터이너에서 특정 파일을 주기적으로 백업 해야 할 떄 유용하지만. 호스트에서 컨테이너의 파일에 접근이 가능하게 되므로 보안 취약점이 될 수도 있습니다. 또한 이를 통해 도커가 완벽히 격리된 환경을 제공하지는 않는다는 것을 알 수 있습니다.

3주차 모임

이날은 두 분께서 개인 사정으로 출석을 하지 못하셨습니다. 한 분은 몸 상태가 안좋아서 병가, 다른 한분은 개인 스케줄 때문에 못 오셔서, 저랑 나머지 한 분. 이렇게 두명에서 스터디 모임을 진행 했습니다. 이날은 8~9장 부분의 내용을 다뤘습니다. 8장이 서버에 도커로 앱 배포하는 것에 관한 내용, 9장이 도커를 모니터링 하는 것에 관한 내용 이였습니다. 8장에서 Git Hook 을 설정해서, 서버에 있는 원격 저장소에 커밋을 푸시하면, 이를 감지해서 도커 이미지를 빌드하여 배포하는 내용이 나오는데. Heroku나, 도커를 기반으로 하는 도쿠(Dokku) 에서 많이 본 것 같더군요. 도커 모니터링 부분에서는, 책에서 보니 모니터링 서버를 별도로 두는 것 같아서 아마존에서 VM 하나 더 만들어야 하나 싶었는데, 같은 서버에 도커로 앱 돌리고, 모니터링 서버 컨테이너를 함께 돌려도 크게 문제는 없더군요. 다만 포트를 달리 하면 된다는 것을 알았습니다. 모니터링의 경우, 그래프를 좀 보려면… 한참 기다려야 하더군요.

4주차 모임

4주차 모임에서는 10~15장의 내용을 다뤘습니다. 주로 클라우드(AWS, MS Azure 등)에 도커로 배포하는 방법, 도커 허브, 리모트 API, CoreOS 에 대해 다뤘습니다. 클라우드에 배포하는 부분은 각자 사용하는 클라우드 컴퓨팅 서비스에 어떤 방식으로 배포했는지에 대해 공유 했습니다. 저의 경우는 AWS EC2 를 사용해서 EC2 에 도커로 배포하는 방법을 공유 했습니다. 컨테이너를 업데이트 하는 방법이 인터넷 뒤져봐도 나오지 않아서 질문을 했는데, 도커의 철학이 컨테이너를 부수고 다시 만드는 거여서 그런 기능이 없다는 대답을 들었습니다. 도커 허브의 경우는, 사용법을 알면 쓰는것이 그렇게 어렵지 않아서 별다른 이야기가 없었던 것 같네요. 도커 허브처럼 이미지 배포에 사용 가능한, GitLab Container Registry 를 제가 유용하게 쓰고 있었던 지라 소개해 주었습니다. 리모트 API 의 경우는, 잘 활용하면 도커로 하는 작업들을 자동화 할 수 있기 때문에, 꽤나 중요함을 알게 되었습니다.(그러나 저는 리모트 API를 공부해 오지 않았…) 코어 OS 의 경우는 저도 공부를 안 해오고(…) 한분만 공부를 해 오셔서 그 분께서 코어 OS 부분을 알려 주셨습니다. 저도 그렇고 코어 OS 가 필요할까 라는 의문을 가지시는 분이 많더군요.

5주차 모임

책에서 나머지 남은 부분을 모두 다뤘고, 전 주 모임에서 제대로 다뤄보지 못한 코어 OS 에 대해서 조금 더 다뤄보는 시간을 가졌습니다. 이후에는 남은 3주동안 무엇을 할지에 대해서 이야기 하였습니다. 6주차에는 안드로이드 앱을 도커 컨테이너에 돌려 보기로 하였고, 7주차에는 심장훈 님께서 LXD 와 도커를 비교해 소개 하시는 것으로 하였고, 마지막 주에는 각지 도커의 특정 부분을 살펴보기로 결정 하였습니다.

6주차 모임

도커 컨테이너에서 안드로이드 앱을 돌려 보는 시간을 가졌습니다. 크롬 브라우저 위에서 돌아가는 ARC Welder 라는 앱을 이용하면 안드로이드 앱을 구동할 수 있다는 점을 이용해서, 도커 컨테이너에 크롬과 ARC Welder 를 넣는 방식으로 안드로이드 앱을 구동해 보았습니다. 안드로이드 프레임워크를 컨테이너에 넣어서 구동 환경을 만들고 이 컨테이너로 안드로이드 앱을 돌려 보고 싶다는 분들이 계셔 알아 보았으나… 그날 모임에서 하기에는 어렵다는 결론을 내리고(…) 개인적으로 하는 것으로 결정했습니다.

7주차 모임

심장훈 님께서 캐노니컬에서 개발한 컨테이너 엔진인 LXD 에 대해서 도커와 비교해 가면서 소개해 주셨습니다. 도커의 경우는 컨테이너를 부수고 다시 만들라는 철학을 철저히 따라서(…) 실행중인 컨테이너의 자원 할당 등을 변경이 불가능한 반면, LXD 에서는 가능하다는 것이 흥미로웠습니다.

8주차 모임

마지막 모임에서는 도커 네트워크, 도커 스토리지, 도커 시큐리티 중에서 각자 하나씩 선택해서 공부해 온 것을 공유했습니다. 도커 네트워크에 관한 내용을 공유하시기로 하셨던 분은, 도커 네트워크를 공부하려다 네트워크를 먼저 공부하다 끝나버려서(…) 공유를 못했고. 스토리지에 대해서 공유해 주신 분께서는 도커 컨테이너에서 기본적으로 사용하는 파일 시스템인 AUFS와, 오라클의 파일 시스템인 ZFS에 대해 알려주셨습니다. 저는 도커 시큐리티에서, Kernel Capabilities 에 대해 공부한 내용을 공유하는 시간을 가졌습니다. 스터디 모임을 마친 후에는, 끝난 기념으로 치킨과 맥주를 함께 먹고, 모임을 마무리 했습니다.

스터디 모임 이후에는, 같은 주 토요일(2016.09.24) 우분투한국커뮤니티 정기 나눔 모임에서, 도커 스터디 결과 발표를 하는 것으로, 스터디가 완전히 마무리 되었습니다. 매 주 홍대 토즈로 이동하는 것이 조금 힘들기는 했지만, 스터디 모임을 하면서 도커에 대해 다양한 것을 배웠고, 그 외다 다른 자잘한 것도 배울 수 있어 좋은 시간 이였다고 생각합니다. 또한 새로운 사람도 만날 수 있어 좋은 기회였습니다.

참고자료

스터디 기록 문서가 우분투 한국 커뮤니티 위키에 있습니다. 스터디 내용에 대해 더 궁금하신 것이 있다면 참조하세요.

Previous

Node.js로 Slack 회의록봇 만들기. - 회의 내용 처리 및 저장

2016.05.27

Read more

Next

캐노니컬 라이브패치 서비스 사용하기

2016.10.20

Read more