반응형
1. 도커 이미지 생성 (Python 3.6 docker container image build)
1) 기본적인 이미지 생성 방식
<1> 우분투 이미지를 베이스로 파이썬을 설치한 후, 필요한 모듈을 pip받아와서 실행.
<2> 미니콘다 이미지를 베이스로 conda environment를 설치하기.
둘 다 설명하도록 하겠다.
2. 우분투 이미지를 베이스로 설치하는 방법.
머신러닝을 위해 tensorflow와 mxnet, torch가 설치된 나만의 image를 빌드해보자.
우선 폴더를 만들고, 해당 폴더에 Dockerfile, requirements.txt, test.py를 생성.
<1> Dockerfile
###Dockerfile
FROM ubuntu:16.04
# 환경변수 설정 (옵션)
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
# 기본 패키지들 설치 및 Python 3.6 설치
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository -y ppa:fkrull/deadsnakes
RUN apt-get update
RUN apt-get install -y --no-install-recommends python3.6 python3.6-dev python3-pip python3-setuptools python3-wheel gcc
RUN apt-get install -y git
#pip 업그레이드
RUN python3.6 -m pip install pip --upgrade
# 현재 폴더내의 모들 파일들을 이미지에 추가
ADD . /app
# 작업 디렉토리로 이동
WORKDIR /app
# 작업 디렉토리에 있는 requirements.txt로 패키지 설치
RUN pip3 install -r requirements.txt
# 컨테이너에서 실행될 명령어. 컨테이거나 실행되면 app.py를 실행시킨다.
CMD python3.6 test.py
<2> requirements.txt
pip 받아올 대상을 명시.
#버전을 지정하고 싶다면 (==)사용
tensorflow==2.0
mxnet
torch
<3> test.py
간단한 코드를 생성.
import tensorflow as tf
import mxnet
import torch
print(tf.__version__)
print(mxnet.__version__)
print(torch.__version__)
print("hello")
<4> cmd / zsh에서 build 실행
#cmd에서 위의 파일들이 있는 폴더로 이동
cd 폴더명
docker build -t 이름 . # . 을 빼먹지 말 것
#빌드가 다 되면,
docker run 이름
결과 :
3. miniconda를 기반으로 이미지 빌드
<1> 콘다 가상환경에서 environment.yaml을 export해야함.
#cmd에서 목록을 추출할 가상환경을 실행.
conda activate 가상환경이름
conda env export --no-builds > environment.yaml
#다음과 같은 파일이 생성됨
"""
name: ner
channels:
- defaults
dependencies:
- ca-certificates=2020.6.24
- certifi=2020.6.20
- libedit=3.1.20191231
- libffi=3.3
- ncurses=6.2
- openssl=1.1.1g
- pip=20.2.2
- python=3.6.10
- readline=8.0
- setuptools=49.2.0
- sqlite=3.32.3
- tk=8.6.10
- wheel=0.34.2
- xz=5.2.5
- zlib=1.2.11
- pip:
- torch==1.4.0
- tqdm==4.48.2
- transformers==3.0.2
- seqeval==0.0.12
prefix: /Users/so/opt/anaconda3/envs/ner
"""
<2> Dockerfile 생성
FROM continuumio/miniconda3
#모든 파일을 app이라는 폴더를 만들어서 저장.
ADD . /app
#conda update
RUN conda update conda
#실행
RUN conda env create -f /app/environment.yaml
ENV PATH /opt/conda/envs/mro_env/bin:$PATH
RUN /bin/bash -c "source activate mro_env"
CMD python3.6 /app/test.py
<3> test.py는 위와 동일.
<4> cmd / zsh에서 build 실행
#cmd에서 위의 파일들이 있는 폴더로 이동
cd 폴더명
docker build -t 이름 . # . 을 빼먹지 말 것
#빌드가 다 되면,
docker run 이름
결과는 동일
4. 도커 이미지, 컨테이너 삭제.
1) 동작중인 컨테이너 확인
$docker ps
#모두 종료
docker stop $(docker ps -a -q)
2) 정지된 컨테이너 확인
$docker ps -a
#모두 삭제
docker rm $(docker ps -a -q)
3) 컨테이너 삭제
# 1개씩 삭제할 때
$docker rm [컨테이너 id]
# 여러개를 삭제할 때
$docker rm [컨테이너 id],[컨테이너 id]
#모두 삭제
$docker rmi $(docker images -q)
4) 현재 이미지 확인
$docker images
5) 이미지 삭제
$docker rmi [이미지id]
#컨테이너가 있는 경우, 이미지 삭제가 안될수 있음
#f옵션을 추가하면 컨테이너도 같이 강제로 삭제함
$docker rmi -f[이미지id]
6) 실행 중인 컨테이너에 접근
#실행 중인 컨테이너의 아이디 확인
$docker ps
#컨테이너의 bash를 실행해서 접근
$docker exec -it 컨테이너id /bin/bash
#다 끝나고 나가려면
exit
반응형
'Python > IDE, 버전관리, 도커' 카테고리의 다른 글
Docker 명령어 정리 (0) | 2022.08.30 |
---|---|
docker build시, [Errno 28] No space left on device 해결 (0) | 2021.07.13 |
10. Jupyter Notebook 단축키 (0) | 2020.02.11 |
파이썬 버전관리를 위한 아나콘다 사용법(파이참 연동) (3) | 2019.09.25 |
1. 파이썬(Python) 설치 + IDE(Pycharm 설치) (0) | 2019.09.18 |