[2021/07/26] 가상화 구축을 위한 리눅스와 Docker활용

[2021/07/26] 가상화 구축을 위한 리눅스와 Docker활용

728x90

- 명령어(설치 / 실행 / 삭제 / 정지)

# 태그가 없으면 최신버전 다운로드 docker pull ubuntu # 특정 버전 다운로드 docker pull ubuntu:18.04 # docker image 목록을 보여주는 명령어 docker images docker image ls # docker image ID목록을 보여주는 명령어 docker images -q docker image ls -q # docker image 삭제 명령어 docker rmi [이미지ID or Repository 이름] docker image rm [이미지ID or Repository 이름]

- Docker run 옵션

- Docker 실행

docker pull ubuntu:18.04 # 터머널에 stdin이 가능한 demon(백그라운드)로 myubuntu라는 별칭의 지정버전으로 실행 docker run -itd --name myubuntu ubuntu:18.04 # 실행중인 컨테이너 조회 docker ps # myubuntu 컨테이너 실행, 입력 터미널에서 /bin/bash 명령 실행 docker exec -it myubuntu /bin/bash # 종료 exit

- Container 중지 및 삭제

# 컨테이너 중지 docker stop myubuntu # 실행중인 목록에 조회 안됨 docker ps # 중지된 목록에 조회됨 docker ps -a # 컨테이너 삭제 docker rm myubuntu

- Docker file : 이미지 생성을 위한 스크립트

텍스트 파일 형식으로 명령과 인자로 이루어지며 대문자로 작성함.

- Docker file 기본 명령어

- alpine

FROM alpine

docker 컨테이너는 특정 응용 프로그램의 실행을 목적으로 하는 경우가 많기 떄문에 다양한 기능을 모두 포함할 필요가 없음 ( 도커 이미지/컨테이너 사이즈가 작으면 작을 수록 좋음)

docker 이미지의 기본이 되는 이미지는 ubuntu가 아닌, alpine 경우가 많음

- build

# 현재경로에 저장된 DockerFilel로 test 태그로 이미지 빌드 docker build --tag nginx_image ./ # nginx_image를 이용해서 nginx_container 생성 -d(백그라운드 실행) docker run -d -p 8081:80 --name nginx_container nginx_image # docker container 접속 docker exec -it nginx_container /bin/bash

# Docker File을 이용한 플라스크 서버 구축

기존에 만든 hello_flask 플라스크 웹서버를 docker로 띄우기

# nginx 를 기본 이미지로 함 FROM nginx # 작성자 정보 LABEL maintainer="[email protected]" # 리눅스 업데이트 RUN apt-get update #개발과 관련한 프로그램 (파이썬등) 업데이트 -y는 설치할때 y를 자동 입력 #파이썬 3.7.3 버젼이 설치됨 RUN apt install -y software-properties-common #파이썬 개발 관련 패키지 설치 RUN apt-get install -y python3-dev # 폴더 생성 # docker는 기본 이미지에 bash 대신에 sh 가 설치되 있음 # flask 프로그램을 설치할 폴더 /home/ubuntu/ai/cloud/workspace/flask_project 생성 RUN ["/bin/sh", "-c", "mkdir -p /home/ubuntu/ai/cloud/workspace/flask_project/hello_flask"] # 파일 생성 # 현재 폴더의(./) hello_flask 폴더를 Docker container의 /home/ubuntu/ai/cloud/workspace/flask_project/hello_flask 복사 COPY ./hello_flask /home/ubuntu/ai/cloud/workspace/flask_project/hello_flask # 파이썬 라이브러리를 설치할 pip3 설치 RUN apt-get install -y python3-pip # wheel pandas Flask matplotlib pyecharts waitress 라이브러리 설치 RUN pip3 install wheel pandas Flask matplotlib pyecharts waitress # nginx 설정파일 hello_flask.conf 를 /etc/nginx/conf.d 폴더로 복사 COPY ./hello_flask.conf /etc/nginx/conf.d/ # 기존 nginx 설정 파일 /etc/nginx/conf.d/default.conf 삭제 RUN ["/bin/sh", "-c", "rm /etc/nginx/conf.d/default.conf"] # 한글 폰트 설치 RUN apt -qq -y install fonts-nanum # 한글폰트를 matplotlib로 복사 RUN cp /usr/share/fonts/truetype/nanum/Nanum* /usr/local/lib/python3.7/dist-packages/matplotlib/mpl-data/fonts/ttf/

ps) DockerFile이 있는 경로에 flask.conf 파일과 프로젝트 폴더파일이 같이 있어야함

이제 CMD를 관리자 권한으로 켜서 아래의 프로세스를 진행해 주자

# 이미지 빌드 docker build --tag flask_image ./ # container 생성, nginx와 브라우저 포트가 같아 같이 실행? 됨 docker run -d -p 80:80 --name flask_container flask_image # flask_container 접속 docker exec -it flask_container /bin/bash # 플라스크 서버 백그라운드 실행 app.py

http://localhost:80으로 확인

from http://yoonghee.tistory.com/120 by ccl(A) rewrite - 2021-07-26 17:26:35