https://89douner.tistory.com/95?category=878197

안녕하세요~

이번글에서는 Docker라는 개념에 대해서 알아보도록 할게요!

지난번에 아나콘다를 이용해서 가상환경을 구축하는 이유에 대해서 알아보았어요. 그런데, 아래 구조를 보면 아나콘다는 PC computer에 종속되어 있는걸 볼 수 있어요.

예를들어, 내 PC에서 아나콘다를 설치해 가장환경을 구축했으면, 내 옆자리의 PC에서 (내 PC에서 만든) 가상환경을 사용할 수 없어요. 이때 내 PC를 로컬이라고 하는데요. 이러한 아나콘다 가상환경의 문제점은 로컬에 종속된다는거에요.

<사진1>

그래서 내 PC에서 하던 작업을 친구 PC에서 해야하는 경우에는 친구 PC에 똑같이 패키지들을 설치해줘야해요. "아.. 그냥 내 PC에 있는 개발환경들을 사진(이미지)로 만들어서 친구PC에 옮겨 그대로 사용하고 싶다..." 이런 생각을 하실텐데요. 이것을 가능하게 한것이 바로 'Docker'란 녀석이에요.

<1. Docker>

  1. 내가 직접 설치할 필요가 없어요!

아나콘다 가상환경에서는 내가 직접 가상환경을 구성해주고 패키지들을 설치해주었죠? 하지만, Docker를 사용하면 이런 불편함을 없앨 수 있어요.

내 PC에서 가상환경 A, B, C를 만들었다고 가정해볼게요. 가상환경A에는 파이토치 개발환경, B에는 텐서플로우 개발환경, C에는 케라스 개발환경으로 설정되어 있는데요. 이걸 다른 PC에서도 사용하기 위해 이러한 가상환경을 하나의 도커 파일(이미지)로 만들어 Docker hub라는 곳으로 보내요. (이때 이미지라는 용어는 '사진'이라는 개념으로 이해하면 좋을텐데요. 그냥 내가 우분투라는 OS를 설치를해서 "설치가 마무리 된 상태"를 하나의 사진으로 찍어서 파일로 만들어주면, 다른 사람들은 내가 만들어 놓은 이미지만 실행시키면 내가 OS를 설치 할때 여러 설정들을 해주었던 귀찮은 작업을 할 필요가 없어져요)

그럼 친구 PC에서 파이토치 개발환경을 세팅하고 싶으면 Docker hub라는 곳으로가 내가 올려놓은 가상환경A에 해당하는 도커파일(이미지)을 다운받으면 자동으로 설치가되요. 간단하죠?

<사진2>

아래 사이트에 접속하시면 좀 더 직관적으로 이해가 가능하실거에요!

http://taewan.kim/post/python_env_for_machine_learning/

그런데 보통은 개발자들이 '파이토치', '텐서플로우' 이러한 개발환경들을 도커파일(이미지)로 Docker hub에 올려놓는데요. 우리는 그 도커파일(이미지)만 다운받으면 따로 패키지 설치할 필요없이 간편하게 파이토치를 바로 사용할 수 있게되요~