프로그래밍

최고의 가상환경, docker 개념 및 활용 방법 소개

개발독학 2021. 4. 21. 13:49

오늘은 어디에나 쓸 수 있는 최고의 가상 환경인 docker를 소개하겠습니다.

docker

docker는 정말 어디에서나 사용할 수 있는 편리한 가상 환경입니다.

우리가 개발하는 컴퓨터에서 운영 서버 혹은 다른 컴퓨터로 소스를 옮겨서 실행할 때는 어떻게 하죠?

소스를 옮기고 실행 환경을 하나씩 맞추고 실행을 합니다.

하지만 이렇게 하는 과정도 굉장히 깁니다. 그리고 실행을 했을 때 내 컴퓨터에서는 발생하지 않았던 오류가 발생하기도 합니다. 왜 이런 현상이 발생할까요? 기반으로 돌아가는 운영 체제 또는 언어나 라이브러리의 버전 등 수많은 이유가 있습니다. 그렇다면 이 문제를 해결할 수는 없는 걸까요? 그 답은 docker를 사용하는 것입니다.

 

쉽게 설명하자면 docker는 어떤 운영 체제에서 어떤 라이브러리들을 미리 설치해놓고 가상 환경을 만들어 주는 프로그램입니다. Windows, Mac, Linux 등 거의 모든 운영 체제에서 docker를 실행할 수 있습니다. 다만 Windows에서는 GPU 기반의 docker 실행이 불가능합니다. 그렇다면 어떻게 시작하면 될까요?

 

내가 환경을 직접 만들고 싶다면 Dockerfile을 작성하면 됩니다. 그 방법이 설명된 사이트는 굉장히 많습니다. 구글에 dockerfile만 검색해도 수많은 가이드들이 나옵니다. 한국어로 된 것도 많아서 따라하기도 쉽습니다.

 

"FROM" 키워드를 통해 어떤 docker image에서 시작할지를 먼저 정합니다. docker image는 실행환경이 저장된 거라고 보면 됩니다. 우리가 Windows image라고 하는 것처럼요. 그럼 어떤 이미지에서 시작할지는 어떻게 정할까요? dockerhub를 찾아보면 됩니다. github처럼 docker image를 공유하는 사이트입니다. 이 사이트 또한 매우 많은 이미지가 존재해서 먼저 찾아보는 걸 추천드립니다. linux 환경에서 라이브러리 설치는 주로 "apt install"과 같은 명령을 사용합니다. dockerfile에서도 "RUN apt install library_name"과 같은 명령을 통해 설치를 하면 됩니다. 이렇게 만든 docker image를 여러분도 docker hub에 올릴 수 있습니다. 방법은 git과 유사합니다. 이미지를 받을 때는 "docker pull user_name/image_name", 이미지를 docker hub에 업로드할 때는 "docker push user_name/image_name"과 같이 명령어를 터미널에 입력하면 됩니다. 사용자 이름이 들어간다는 차이가 있습니다.

최근에 docker hub의 정책이 바뀌게 되면서, 무료 계정의 경우 일정 기간 동안 pull이 되지 않은 docker image는 삭제된다고 합니다. 그래서 해당 docker image를 만들어준 Dockerfile은 어딘가에 보관하고 있는 게 좋습니다. Dockerfile이 있으면 docker hub에서 내려받지 않더라도 로컬 환경에서 이미지를 만들 수 있으니까요.

 

그래서 요즘 github 소스들을 보면, docker image가 존재하거나 Dockerfile을 만들어놓은 경우가 많습니다. 인공 지능 관련 소스의 경우 환경 맞추기가 까다로운 경우가 많아서, Dockerfile이 있는 경우가 많습니다. 또한 운영 서버나 다른 컴퓨터에 반영할 경우에도 매우 편리하기 때문에 좋습니다. 굳이 위험 감수를 해야 될 경우도 없어집니다. 물론 docker가 모든 환경에 있어서 만능키라고 할 수는 없습니다. docker로 환경을 잡기 힘든 경우가 있을 수도 있으니까요. 하지만 대부분은 가능하다고 생각합니다. 그래서 저는 새로운 소스를 구현할 때 docker 환경이 있거나 docker로 환경을 만들 수 있다면 우선 그 방법을 시도해봅니다. 많은 수고를 덜어주기 때문이죠.

 

이 글을 읽고 있는 여러분도 더 이상의 불편 없이 docker를 사용해보시기 바랍니다.