본문 바로가기

Tech/Docker

(6)
Udemy : Docker & Kubernetes 후기 이번에 글또 커뮤니티에서 좋은 기회로, 유데미의 Docker & Kubernetes 강의 쿠폰을 선물받을 수 있었습니다. 사실 이전에 도커를 공부해 보고자 두툼한 책을 샀었지만, 혼자서 많은 양을 공부하기란 쉽지 않더군요ㅜ 그런데 이번엔 글또에서 강의를 함께 공부할 스터디원을 만났습니다! 저는 함께하면 항상 끝까지 잘 완주하는 장점이 있는데, 역시 이번에도 함께 강의를 잘 완주할 수 있게 되었습니다. 그런 기념으로, 제가 들었던 강의의 솔직한 후기를 좋았던 점, 배웠던 점, 아쉬운 점, 앞으로 바라는 점에 대해서 후기를 하며, 자축을 하고자 합니다. 후기 Liked(좋았던 점) [추상적인 개념을 도식화로] 도커와 쿠버네티스는 개념 자체가 굉장히 추상적입니다. 이 강의에서 가장 좋았던 점은, 그 추상적인 ..
딥러닝 서비스 컨테이너화 #1 모델 서빙이란 AI 서비스 관점에서, 모델을 잘 학습시키는 것 외에 해야 할 단계가 하나 더 있습니다. 바로 모델을 서빙하는 단계입니다. 잘 학습시킨 모델을 유저들이 사용할 수 있도록 실제 애플리케이션에 녹여내는 과정이라 보면 되겠습니다. 이 서빙 단계에서는 고려해 줘야 할게 한두 가지가 아닙니다. 유저들의 데이터는 어디에 보관할지, 모델 추론 시간을 실시간성으로 확보할 수 있을지, 유저들이 한꺼번에 몰릴 때는 어떻게 확장할지 등 엔지니어링 관점으로 고려해야 할게 수도 없이 많습니다. 그러한 과정을 잘 나타내주는 테크블로그 하나를 소개하고자 합니다. 이번 포스팅에서는 서빙단계에서 가장 기본이 되는 "컨테이너화"를 중점으로, 간단한 딥러닝 서비스를 컨테이너화하는 과정을 기록하고자 합니다. 딥러닝 서비스의 ..
Docker Network : 호스트와 컨테이너를 위한 네트워크를 구성해보자 컨테이너가 실행될 때, 특정 내부 IP가 할당됩니다. 이때 내부 IP만으로는 외부와의 통신이 불가능하죠. 우리가 컨테이너를 활용하다 보면, 컨테이너와 컨테이너, 컨테이너와 호스트 등 서로 통신이 가능해야 할 순간이 필수일 겁니다. 이를 위해, 도커의 네트워크 구조를 살펴보고, 이러한 구조 아래에서 다양한 네트워크를 구성해 보겠습니다. 도커 네트워크의 구조 도커의 기본적인 네트워크 구조는 아래와 같습니다. 우리가 확인해 봐야 할 요소는 크게 호스트의 eth0, 기본 브리지인 docker0, 컨테이너의 가상 네트워크 인터페이스인 veth 이 3가지입니다. 각각의 요소를 살펴보겠습니다. eth0 호스트의 eth0은, 실제 우리가 외부와 연결할 때 사용하는 IP가 할당된 호스트 네트워크 인터페이스입니다. doc..
Docker Volume : 컨테이너의 데이터를 영속적으로 보관해 보자 Docker Volume 도커 이미지를 컨테이너로 실행하게 되면, 컨테이너는 아래 보이는 그림처럼 이미지레이어 위에 컨테이너레이어가 구성되었는 구조를 가집니다. 이때 이미지 레이어는 읽기전용(read only)이기에, 컨테이너로 무슨 작업을 하던 이 이미지 레이어는 어떠한 영향도 받지 않습니다. 반면, 컨테이너 레이어는 읽고 쓸수 있는 구조이기에(read & write), 컨테이너 내에서 생성되는 데이터는 해당 컨테이너 레이어에 저장되게 되죠. 리눅스의 union file system 기술이 위의 레이어들을 하나의 시스템처럼 동작할 수 있도록 해줍니다. 하지만, 여기에는 큰 위험성이 존재합니다. 해당 컨테이너를 삭제시키면, 컨테이너 레이어도 동시에 삭제되기 때문에 저장되어 있던 소중한 데이터를 잃을 수 ..
Dockerfile & Commit : 나만의 애플리케이션을 Docker Image로 만들어 보자 나만의 Docker Image를 만들어보자 도커 허브에서 우리가 필요로 하는 이미지를 docker pull 명령어를 통해 마음껏 가져올 수 있습니다. 하지만, 도커 허브에 존재하지 않는, 우리만의 프로젝트를 이미지로 만들어 공유해야 할 순간이 있습니다. 이러한 순간을 대비해, 직접 커스텀 이미지를 만드는 방법을 알아보고자 합니다. 나만의 커스텀 이미지를 만들기 위해선 크게 Dockerfile을 이용하는 방법과, Commit 명령어를 이용하는 방법 2가지로 나눠볼 수 있습니다. 해당 포스팅에서 얻어갈 수 있는 정보는 아래와 같습니다. Commit을 통해 이미지 생성하기 Dockerfile을 통해 이미지 생성하기 Commit을 통해 이미지 생성하기 commit 명령어는 현재 작업중인 컨테이너를 이미지로 변환..
Docker의 구성 요소 : 이미지, 컨테이너, 레이어 도커의 필요성 도커를 처음 공부했을 때는 “어렵기만 하다”생각했습니다. 내가 왜 이 어려운 내용을 배우고 있는 건지, 그 어떤 목적성과 필요성이 없었기 때문이죠. 이처럼, 무작정 도커를 공부하려 하면 이해 안 가는 게 투성이 일 것입니다. 어렵기도 하고요. 하지만, 도커가 필요한 순간을 몇 번 마주치고 그 맥락을 인지하게 되면, 도커만큼 재밌고 또 잘 다루고 싶은 툴은 없을 거라 생각합니다. (깃도 비슷한 맥락이겠네요) 그러한 관점에서, 개인적으로 도커의 필요성을 느낀 순간을 공유하고자 합니다. 작년, 딥러닝 관련 외주 프로젝트를 진행할 당시였습니다. 마감 기한을 2일 남겨놓고 필요한 모든 코드와 테스트를 완료해 놓았습니다. 최종 데모를 위해 다른 컴퓨터에 실행만 시키면 되는 상황이었기에 매우 여유로웠습..