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

[Linux] Docker 개발 환경

by yejineee 2023. 4. 16.

Docker Architecture

Docker Architecture


Nginx

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

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

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


Dockerfile 구성 및 옵션

FROM ubuntu:18.04
MAINTAINER LEE <leeyejin@mail.ac.kr>

RUN apt-get update
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"]

WORKDIR /etc/nginx
CMD ["nginx"]

EXPOSE 80
EXPOSE 13000
  • FROM: 어떤 이미지를 기반으로 할지 설정
  • MAINTAINER: 이미지 작성자 정보
  • RUN: 이미지에서 스크립트나 명령 실행
  • CMD: 컨테이너가 시작되었을 때 스크립트나 명령 실행
  • ENTRYPOINT: 컨테이너가 시작되었을 때 스크립트나 명령 실행(docker run에서 처리 방식이 다름)
  • EXPOSE: 호스트와 연결할 포트 번호 설정
  • ENV: 환경 변수 설정
  • ADD, COPY: 이미지에 파일 추가
  • VOLUME: 데이터를 호스트에 저장하도록 설정
  • USER: 명령 실행할 사용자 계정 설정
  • WORKDIR: 명령 실행할 디렉토리 설정
  • OMBUILD: FROM으로 이미지가 사용될 때 실행할 명령 설정

Dockerfile을 활용한 image 생성

# docker build --tag hello:0.1 .

(Dockerfile이 존재하는 위치)

  • 이미지 생성

이미지 생성

 

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

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

컨테이너 생성


Docker 컨테이너 세부 정보 확인

# docker inspect hello-nginx

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

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

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 레포지토리 생성

레포지토리 이름 → push, pull 할 때 사용되는 이름으로 추우 수정 불가능


Docker hub login

# docker login (username, password 입력)

Docker image tag

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

# docker image

  • docker image 파일 태그 걸기

Docker hub image push

# docker push parkjungae/jungae-docker-repo:hello-nginx

Docker hub image pull

# docker pull cross9308/javer:zunoxi

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

Docker hub container 실행

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

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


 

Docker Architecture 참고| https://docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

 

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

[Docker] Docker 환경 웹서버 구축  (0) 2023.06.05
[Docker] Doker 개발 환경  (1) 2023.06.05
[Linux] Docker  (0) 2023.04.16
[Linux] 웹 서버 구축 Apache  (0) 2023.04.15
[Linux] Linux 개발 환경  (1) 2023.04.15