본문 바로가기
2023_국민대/AI 개발 환경의 이해

[Docker] Doker 개발 환경

by yejineee 2023. 6. 5.

Nginx란?

경량 웹 서버로 클라이언트로부터 요청 받았을 때, 요청에 맞는 정적 파일을 응답해주는 HTTP 웹 서버로 활용됨

서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 함

Event-Driven 구조로 동작하기 때문에 한 개 or 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 concurrency하게 처리함


Dokerfile 구성 & 옵션

FROM ubuntu:18.04 # FROM: 어떤 이미지를 기반으로 할지 설정
MAINTAINER LYJ <~~@kookmin.ac.kr> # MAINTAINER: 이미지 작성자 정보

RUN apt-get update # RUN: 이미지에서 스크립트나 명령 실행
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"] # VOLUME: 데이터를 호스트에 저장하도록 설정

WORKDIR /etc/nginx # WORKDIR: 명령을 실행할 디렉토리 설정
CMD ["nginx"] # CMD: 컨테이너가 시작되었을 때 스크립트나 명령 실행

EXPOSE 80 # EXPOSE: 호스트와 연결할 포드 번호 설정
EXPOSE 13000

# ENTRYPOINT: 컨테이너가 시작되었을 때 스크립트나 명령 실행(docker run에서 처리 방식이 다름)
# ADD, COPY: 이미지에 파일 추가
# USER: 명령을 실행할 사용자 계정 설정
# ONBUILD: FROM으로 이미지가 사용될 때 실행할 명령 설정

Dockerfile을 활용한 image 생성

# docker build --tag hello:0.1 . (Dockerfile이 존재하는 위치)

 

# docker images (docker image list. 다운로드 받은 image 목록 출력)

 

컨테이너 생성하기

# docker run --name hello-nginx -d -p 13000:80 -v /root/data:/data hello:0.1

  • -d: datached mode (백그라운드 모드)
  • -p: 호스트와 컨테이너의 포트를 연결
  • -v: 호스트와 컨테이너의 디렉토리를 연결
  • -e: 컨테이너 내에서 사용할 환경변수 설정
  • --name: 컨테이너 이름 설정
  • --rm: 프로세스 종료시 컨테이너 자동 제거
  • -it: -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
  • --network: 네트워크 연결

# docker ps (실행중인 컨테이너 확인)

# docker ps -a (모든 컨테이너 확인)

  • CONTAINER ID: 컨테이너 생성시 지정되는 임의의 컨테이너 ID (앞의 12자리만 출력)
  • IMAGE: 컨테이너 생성시 사용된 이미지 이름
  • COMMAND: 컨테이너 시작되면 실행될 명령어
  • CREATED: 컨테이너가 생성된 기간
  • STATUS: 컨테이너 상태 (UP: 실행중, Exited: 중지됨, Pause: 일시중지)
  • PORTS: 컨테이너가 오픈한 포트와 호스트에 연결 상태
  • NAMES: 컨테이너 고유 이름, 중복 불가능, 변경 가능

Docker 컨테이너 세부 정보 확인

컨테이너의 세부정보 확인 (image 등)

# docker inspect hello-nginx

# FireFox web browser에서 http://127.0.01:13000 접속 확인

Docker 기타 명령어

(이미지 히스토리 확인)

# docker history hello:0.1 

 

(컨테이너에서 호스트로 파일 복사)

# docker exec -it hello-nginx /bin/bash (컨테이너 접속)

# docker cp hello-nginx:/etc/nginx/nginx.conf ./

 

(컨테이너에서 변경된 파일 확인)

# docker diff hello-nginx

 

(컨테이너의 변경 사항을 이미지로 저장)

# docker commit hello-nginx hello:0.2

 

Docker hub login

# docker login (username, password 입력)

Docker image tag

(docker image 파일 태그 걸기)

# docker tag [image name][docker hub id]/[repository name]:[tag name]

# docker image

Docker hub image push

# docker push [docker hub id]/[repository name]:[dockerfile name]

 

Docker hub image pull

(docker hub에 올라가 있는 다른 웹 서버 image pull)

# docker pull ~~

Docker hub container 실행

# docker run -p 3000:3000 [image ID]

# FireFox web browser에서 서버 접속 (http://127.0.0.1:3000/coin)

'2023_국민대 > AI 개발 환경의 이해' 카테고리의 다른 글

[Git] Git, Github  (0) 2023.06.09
[Docker] Docker 환경 웹서버 구축  (0) 2023.06.05
[Linux] Docker 개발 환경  (0) 2023.04.16
[Linux] Docker  (0) 2023.04.16
[Linux] 웹 서버 구축 Apache  (0) 2023.04.15