원티드 프리온보딩 챌린지 백엔드
주제는 도커
@@@공식 문서 많이 참고하기@@@
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 | 호스트 머신의 디렉토리를 컨테이너에 마운트할 수 있도록 설정 |
마운트란?
호스트 머신에 있는 특정 디렉토리나 파일 시스템을 컨테이너 내부로 연결하는 작업
마운트된 디렉토리나 파일 시스템은 컨테이너 안에서 마치 컨테이너 내부의 일부인 것처럼 사용가능