배고픈 개발자 이야기
[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="cloud.ai.education@gmail.com"
# 리눅스 업데이트
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 생성
docker run -d -p 80:80 --name flask_container flask_image
# flask_container 접속
docker exec -it flask_container /bin/bash
# 플라스크 서버 백그라운드 실행
app.py&
http://localhost으로 확인
ps) 80(진짜):80(가짜) 일때는 브라우저 접속시 포트번호 x, 8080:80일때는 접속시 :8080추가
'인포섹 아카데미' 카테고리의 다른 글
[2021/08/04] SQL 쿼리 연습1 (0) | 2021.08.11 |
---|---|
[2021/08/05] SQL 쿼리 연습2 (0) | 2021.08.11 |
[2021/07/23] 가상화 구축을 위한 리눅스와 DOCKER 활용 (0) | 2021.07.23 |
[2021/07/22] 가상화 구축을 위한 리눅스와 DOCKER 활용 (0) | 2021.07.22 |
[2021/07/21] 클라우드 컴퓨팅 환경과 서비스 (0) | 2021.07.21 |
Comments