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 |