data engineering

docker getting started

qkqhxla1 2017. 4. 17. 16:51

도커란 vmware나 virtual box처럼 가상에서 어떤 프로그램을 실행시키도록 해준다.


하지만 vmware나 virtual box와 다른 점은 vmware등은 os전체를 구현한다는 점이고 도커는 현재 시스템에 있는 자원에서 가상화 부분만 구현한다는 점이다. 그래서 vmware등보다 자원 효율이 좋다.


https://docs.docker.com/compose/gettingstarted/


간단하게 도커를 사용하기 위해 위의 getting started 번역해서 필요한것들만 적어놓음.


1. https://docs.docker.com/compose/install/ 에서 도커 설치


2. 도커용으로 폴더를 만들어서 해당 폴더로 들어간다. (공식 문서에 나온 것처럼 composetest라고 만들자)


3. composetest내부에 app.py라는 파이썬 파일을 만들어서 아래 스크립트를 넣자.


파이썬과 flask가 설치되어 있지 않아도 상관없다. 공식 문서에 나와있는건데 도커의 특성을 잘 보여준다.

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

4. composetest 폴더 내부에 requirements.txt를 만들고

flask

redis

라고 내부에 입력하고 나온다. 이름에서 알수있듯이 파이썬에서 필요한 것들.


5. conposetest 폴더 내부에 Dockerfile을 만들고 아래의 내용을 붙여넣는다.

FROM python:3.4-alpine

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

CMD ["python", "app.py"]


도커 실행시 파이썬 3.4이미지로 실행시킬것이며, 현재 디렉터리 .의 코드를 /code라는 path로 넣고 /code path로 변경 후

위에서 적은 requirements.txt내부의 dependencies들을 설치하고 app.py를 기본 컨테이너로 설정한다고 한다.


6. docker-compose.yml 을 만들자. 아래 내용을 붙여넣자.

version: '2'

services:

  web:

    build: .

    ports:

     - "5000:5000"

    volumes:

     - .:/code

  redis:

    image: "redis:alpine"


7. 이제 composetest폴더 안에는 Dockerfile, app.py, docker-compose.yml, requirements.txt 4개가 있다. 여기서 docker-compose up명령어로 실행시키고 http://0.0.0.0:5000/으로 들어가보면 카운터가 제대로 나오는걸 확인할수 있다.


8. 백그라운드로 실행시킬시 docker-compose up -d로 -d옵션을 줘서 백그라운드로 실행 가능하다.


읽어볼거리 : https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%B2%98%EC%9D%8C-docker-%EC%A0%91%ED%95%A0%EB%95%8C-%EC%98%A4%EB%8A%94-%EB%A9%98%EB%B6%95-%EB%AA%87%EA%B0%80%EC%A7%80/?fbclid=IwAR28yhUEr6RmCVUYdORxJ8r_ga62q0vc4z3dvQrpaZR9cU7fB5w-39OZALY

'data engineering' 카테고리의 다른 글

mapreduce(맵리듀스)란?  (0) 2017.05.20
docker 삽질.  (0) 2017.04.25
redis 기초.  (2) 2017.04.20
index (mongodb)  (0) 2017.04.20
mysql procedure 선언문 예제  (0) 2017.03.28