macOS에 딥러닝을 위한 도커 환경 구축하기

PNG

PNG

딥러닝과 같은 데이터 분석 환경을 구축하려면 파이썬, 라이브러리 등의 버전을 확인해가며 설치해야하고, 주피터 노트북과 같은 에디터에 대한 설정을 해야합니다. 이렇게 매번 새로 환경을 구축하는 번거로움을 줄이기 위해서 Mac에 도커를 설치해봤습니다. Docker는 컨테이너 기반의 가상화 시스템이라고 합니다. 즉, 데이터 분석 환경이 미리 구축된 도커 이미지를 사용해 번거로운 환경 구축 작업을 최소화하는데 목적이 있습니다.


Environment

  • OS : macOS Mojave 10.14.6 ver


도커 설치하기

PNG

도커 홈페이지에 접속해 우측 상단의 Get Started 버튼을 누릅니다.


PNG

중앙의 Download Desktop and Take a Tutorial 버튼을 누릅니다. 이후 로그인이 필요하므로 회원가입 후 작업을 진행합니다.


PNG

중앙의 Download Docker Desktop for Mac 버튼을 누릅니다.


PNG

다운로드된 도커 설치 파일을 실행하고, Docker 아이콘을 Application 디렉토리에 드래그 앤 드롭합니다.


PNG

도커를 최초 실행하면 약간의 시간이 소요됩니다.


PNG

터미널 실행 후 docker run hello-world 명령어를 입력해서 hello from Docker!가 출력되면 도커 설치가 완료된 것입니다.


도커 컨테이너 만들고 접속하기

docker pull ubuntu:18.04

도커 컨테이너를 만들기 위해 리눅스 OS 중에서 Ubuntu 이미지를 받아오겠습니다.


docker images

저장된 Ubuntu 도커 이미지를 목록에서 확인합니다. 도커 컨테이너 목록은 docker ps로 확인합니다.


docker run -t -i -p 8888:8888 ubuntu:18.04

run 명령어를 통해 도커 컨테이너를 생성 - 실행 - 접속 합니다.

-t : tty를 활성화하여 bash 쉘을 사용
-i : 상호 입출력 -p 8888:8888 : 포트 설정


컨테이너에 주피터 노트북 설치하기

패키지 설치

apt-get update
apt-get install -y sudo net-tools nano wget git-core

패키지들을 설치합니다.

패스워드 설정

passwd root

루트 비밀번호 : root

사용자 계정 생성

adduser ubuntu

ubuntu 비밀번호 : ubuntu

nano /etc/sudoers

# User privilege specification 항목의 root계정 아래에 다음을 입력합니다.

ubuntu    ALL=(ALL:ALL) ALL

입력 후 CTRL + X - Y - ENTER 를 통해 빠져나옵니다.

su - ubuntu

ubuntu 계정으로 접속합니다.

도커에 주피터 서버 구축하기

아나콘다 배포판 다운로드

wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

도커 컨테이너에 아나콘다 배포판을 설치합니다.
(2019.10 python 3.7 for linux 버전을 기준으로 합니다.)


아나콘다 배포판 설치

bash Anaconda3-2019.10-Linux-x86_64.sh

license term 에 동의(yes) 후 설치를 완료합니다.


rm -rf Anaconda3-2019.10-Linux-x86_64.sh

설치가 완료되면 설치 파일을 제거합니다.


아나콘다 path 설정

nano ~/.bashrc

PNG

export PATH=/home/ubuntu/anaconda3/bin:$PATH

위 내용을 가장 하단부에 입력 후
ctrl+x입력 - y입력 - Enter입력 하여 빠져나옵니다.

source ~/.bashrc
conda info --envs

콘다 환경 정보가 출력된다면, 아나콘다 path 설정이 완료된 것입니다.

주피터 서버 구축

jupyter notebook --generate-config

.jupyter디렉토리와 .jupyter/jupyter_notebook_config.py설쩡 파일이 생성됩니다.

cd .jupyter
ipython

디렉토리 이동 후 ipython을 실행합니다.

from notebook.auth import passwd
passwd()

패스워드에 jupyter를 입력하고, 결과로 나온 암호를 복사해둡니다.

'sha1:0b94bc192464:c83224b882342aa109f2e78ffe9096cae0ac38e6'
exit()

ipython을 빠져나옵니다.

nano jupyter_notebook_config.py

아래와 같이 설정할 파라미터를 찾고 주석(#)을 제거한 뒤 설정값을 입력합니다. 설정을 마친 후 nano를 빠져나옵니다. 단, ip주소는 ifconfig 명령을 틍해 확인합니다.

c.NotebookApp.password = '복사한 sha1 암호'
c.NotebookApp.ip = '도커 컨테이너 IP 주소'
c.NotebookApp.notebook_dir = '/home/ubuntu/project'
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False


cd ~
mkdir project
jupyter notebook

호스트에서 localhost:8888로 접속하면 주피터 노트북이 활성화됩니다.

주피터 익스텐션 설치

conda install -c conda-forge jupyter_contrib_nbextensions
pip install autopep8

주피터 노트북 확장 프로그램을 설치합니다.

Tensorflow 설치

conda install tensorflow

텐서플로우를 설치합니다. (현재 2.0 버전)


도커 내부 쉘에서 나가기

도커 내부 쉘에서 나가는 방법은 두 가지가 있습니다. 도커 컨테이너를 종료하고 나가는 방법과 컨테이너를 종료하지 않고 나가는 방법이 있습니다.

컨테이너 종료 후 나가기

  • exit
  • CRTL + D
  • 생성한 컨테이너에 접속 시 docker start "컨테이너 ID" 혹은 "컨테이너 NAMES"docker attach "컨테이너 ID" 혹은 "컨테이너 NAMES"

컨테이너 종료하지 않고 나가기

  • CTRL + P, Q
  • 재접속 시 docker attach "컨테이너 ID" 혹은 "컨테이너 NAMES"


도커 이미지 생성하기

docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그>

-a : 이미지를 작성한 작성자 이름을 지정함 -m : 이미지 생성과 관련된 로그 메세지를 지정함

docker commit -a "Wooil Jeong <wooil@kakao.com>" -m "Jupyter Server" laughing_goldstine jupyter:0.1

도커 이미지 jupyter:0.1를 생성했습니다. laughing_goldstine은 컨테이너 이름입니다.


도커 이미지 배포하기

docker login

도커에 로그인을 합니다.

docker tag <push할 이미지 ID 혹은 이름> <도커 허브 ID>/<이미지 이름>:<태그>
docker tag a052db62c77e mcwooil/jupyter:0.1
docker push mcwooil/jupyter

도커 허브에 배포가 완료되었습니다.


배포한 도커 이미지 다운받기

docker pull mcwooil/jupyter:0.1

아나콘다, 주피터 확장 프로그램, 텐서플로우 등이 설치된 도커 이미지를 자유롭게 사용할 수 있게 되었습니다.

태그:

카테고리:

업데이트:

댓글남기기