도커를 이용해 파이썬을 개발해 보려 한다.
사실 파이썬을 하는데 도커를 사용할 것 까진 없지만, 텐서플로우, 하이퍼레저 패브릭을 사용하다 보니 개발 환경을 설정하고 유지하는것이 보통 문제가 아님을 느꼈다. 그래서 도커를 연습해 볼겸 해보게 되었다.
순서는 다음과 같다.
- 도커 설치
- 도커 파일 작성
- 도커 이미지 빌드
- 도커 컨테이너 실행
- jupyter notebook을 통해 파이썬 개발
1.은 도커 홈페이지에서 데스크톱 버전을 설치하면 된다. 이미지를 빌드해두면 맥, 리눅스, 윈도우 상관없이 이미지를 받아서 쓸 수 있다는게 좋은 것 같다.
설치가 완료됐으면, Dockerfile을 생성한다.
MAINTAINER는 도커 파일을 작성한 사람 정보를 써주면 되는듯 하다. 내 메일주소를 적어줬다.
그다음 환경 설정은 실제 우분투에서 하는 작업을 적어주면 된다. apt-get을 업데이트 하고, python3를 pip와 함께 설치해주고, 필요 요소들(jupyter, pandas, bs4 등)을 우분투에서 하듯 입력하면 된다. ‘RUN’ 키워드를 앞에 써주기만 하면 도커 이미지를 빌드할 때 명령들이 실행된다.
FROM ubuntu:18.04
MAINTAINER 당신의 정보RUN apt-get -y update
RUN apt-get -y install python3
RUN apt-get -y install python3-pip
RUN pip3 install jupyter
RUN pip3 install pandas
RUN pip3 install datetime
RUN pip3 install BeautifulSoup4
RUN pip3 install requests
RUN pip3 install lxml
도커파일을 Dockerfile 이라는 파일명으로 저장한 후, 해당 위치에 터미널을 열고 이미지를 빌드한다. 다음의 명령을 이용한다. 이미지명엔 ihwoo-py3-jupyter 를 입력했다.
docker build -t 이미지명 .
그럼 다음과 같이 도커 이미지가 빌드된다.
이제 도커 컨테이너를 실행해 보겠다.
docker run -it -p 8888:8888 -w /python -v ${PWD}:/python 이미지명
- it는 tty를 통해 실행한다는 옵션이다. 이 옵션을 넣으면 터미널을 통해 세팅한 환경에 접속된다. 이 옵션이 없이 실행하면, 컨테이너가 실행되고, 명령을 실행한 후(지금은 입력한 명령이 없기때문에 아무것도 안한다.) 종료된다.
- -p는 포트 옵션이다. 컨테이너의 8888 포트를 호스트의 8888 포트에 연결한다는 의미이다. jupyter notebook은 기본 값으로 8888 포트를 쓰기 때문에 8888을 사용 했으며, 나는 다른 포트를 쓰고싶다! 하면 다른 포트를 써주면 된다.
- -w /python은 working directory를 /python으로 지정하는 옵션이다.
- -v ${PWD}:/python은 현재 터미널의 위치(${PWD})를 볼륨으로 만들어 컨테이너의 python에 마운트 한다는 의미이다.
- 이미지명은 위와 같이 ihwoo-py3-jupyter 를 입력했다.
실행하면 컨테이너에 접속된다. 여기서 exit를 입력하면 접속이 종료되며, 컨테이너 또한 실행이 완료되어 종료된다. AptCalendarCrawling 폴더는 아까 볼륨을 마운트 할때 해당경로에 내가 준비해둔 것이다. 똑같이 따라했다면, 도커를 실행한 곳의 python 폴더 안의 내용이 나올것이다.
이제 jupyter notebook을 실행해 보자. 먼저, python폴더로 이동해준다. 옵션으로 python을 working directory로 입력했기때문에 해당 폴더로 이동되어 있을 것이다.
다음 명령을 통해 jupyter notebook을 실행한다.
jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root
- ip는 서버의 ip 주소를 설정하는 것이다. 기본 값으로 0.0.0.0을 넣어준다.
- port는 jupyter가 사용할 포트번호를 입력한다. 아까 앞에서 jupyter가 기본으로 8888을 사용한다고 했는데, 만약 다른 포트를 사용할 것이라면 여기서 다른 포트를 입력하면 된다.
실행하면 접속 주소가 나올것이다.
웹 브라우저를 통해 해당 주소(127.0.0.1:8888~~~~~)로 가서 접속하면 jupyter를 사용해 python3을 개발할 수 있다.