카테고리 없음

원티드프리온보딩 - 도커1

아놀드금자 2023. 8. 1. 23:58
728x90

원티드 프리온보딩 챌린지 백엔드

주제는 도커

 

@@@공식 문서 많이 참고하기@@@

https://docs.docker.com/

 

Docker Docs: How to build, share, and run applications

 

docs.docker.com

 

 

[1강] 컨테이너 기술에 대해 알아보고 Docker의 기본 개념과 사용법에 대해 알아보자

 

Docker 란?

컨테이너 기반 가상화 도구 -> 리눅스 컨테이너 기술인 LXC 기반

어플리케이션을 인프라에서 분리해줌

인프라를 어플리케이션 관리하듯 관리할 수 있음

신속함

 

 

컨테이너란?

가상화 기술 중 하나

호스트 운영체제 위에 여러개의 격리된 환경 생성

각각의 컨테이너 안에서 애플리케이션 실행

리눅스 커널의 기능을 사용하여 만들어짐

도커에서 사용하는 기술...

 

 

 

하이퍼바이저란?

가상머신(VM)을 생성하고 구동하는 소프트웨어

OS에 자원을 할당 및 조율

OS들의 요청을 번역하여 하드웨어에 전달

호스트 운영체제와는 분리되어 독립적인 커널과 애플리케이션을 가짐

단점... 아주 무겁고 느림

vm웨어나 버추얼박스에서 사용하는 기술...

 

 

 

 

 

Docker Architecture

도커 데몬: 엔진의 핵심 구성 요소, 호스트에서 컨테이너를 관리하고 실행하는 역할, 외부에서 이미지를 다운로드하고 빌드하는 작업 수행

 

도커 이미지: 컨테이너를 만들기 위한 읽기전용 템플릿

도커 컨테이너: 한 이미지의 실행 가능한 인스턴스, 앱을 실행하기 위한 모든 파일과 설정 정보를 포함하는 패키지

 

도커 레지스트리: 이미지를 관리하고 저장하는곳 ex)도커허브

 

 


실습편

 

우리가 쓸 이미지

httpd - Official Image | Docker Hub

 

httpd - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 2.4.57, 2.4, 2, latest, 2.4.57-bookworm, 2.4-bookworm, 2-bookworm, bookworm 2.4.57-alpine, 2.4-alpine, 2-alpine, alpine, 2.4.57-alpine3.18, 2.4-alpine3.18, 2-alpine3.18, alpine3.18 Quick refere

hub.docker.com

 

 

이미지 다운받기

docker pull httpd

 

 

다운받은 이미지 목록 확인

docker images

 

 

파일 준비

git clone으로 실습을 위해 준비된 폴더와 파일을 다운받는다

git clone https://github.com/drum-grammer/docker-pro-2308


도커 컨테이너 생성, 실행

docker run -p 8888:80 -v 프로젝트 경로:/usr/local/apache2/htdocs httpd

 

아휴... 됐다

처음엔 it works! 가 나왔는데

프로젝트 경로를 잘못설정해서 그렇다

띄울 index.html 파일이 있는 곳으로 써야함

 

 

 

docker run은 이미지 -> 컨테이너 생성하기 때문에 최초 1회만 사용해야 한다

계속 사용하면 똑같은 컨테이너가 여러개 생기는 불상사가~

 

 

도커 컨테이너 실행 시에는 start 사용

docker start 컨테이너ID 또는 이름

 

도커 컨테이너 stop

 docker stop 컨테이너ID

 

 

도커 컨테이너 삭제

docker rm 컨테이너ID

 

 

실행중인 도커 컨테이너에 명령어 입력

docker exec [컨테이너 이름 또는 ID] ls

 

Dockerfile로 도커 이미지 빌드하기

 

Dockerfile

FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
EXPOSE 80

해석

FROM ~ :  이미지의 기반이 되는 베이스 이미지 지정, latest는 최신버전을 사용한다는 뜻

COPY~ : 현재 컴퓨터에 있는 index.html 파일을  /usr/local/apache2/htdocs/index.html 경로로 복사함 -> 웹 서버에서 해당 파일을 웹 브라우저에 제공할 수 있음

EXPOSE~ : 호스트와 컨테이너 간의 포트 연결을 설정 -> 웹 브라우저가 컨테이너의 80번 포트에 접속하여 웹 서버에게 HTTP 요청할 수 있음

 

 

도커 이미지 만들기

docker build -t my-httpd .

 

 

 Dockerfile 작성 시 자주 쓰이는 문법

FROM 이미지의 베이스로 사용할 도커 이미지
RUN 이미지를 빌드할 때, 특정 명령어를 실행하여 패키지 설치, 빌드, 설정 등을 수행
COPY 호스트 머신의 파일이나 디렉토리를 도커 이미지로 복사
WORKDIR 컨테이너 내에서 작업 디렉토리를 설정
EXPOSE 도커 컨테이너가 리스닝할 포트 지정
ENTRYPOINT 컨테이너가 시작될 때 실행할 명령어를 지정
VOLUME 호스트 머신의 디렉토리를 컨테이너에 마운트할 수 있도록 설정

 

마운트란?

호스트 머신에 있는 특정 디렉토리나 파일 시스템을 컨테이너 내부로 연결하는 작업

마운트된 디렉토리나 파일 시스템은 컨테이너 안에서 마치 컨테이너 내부의 일부인 것처럼 사용가능

 

 

 

728x90