Dockerfile 어떻게 동작하지 하다가 Docker 정리글을 쓰게됐다.
2024. 8. 6. 10:15ㆍKubernetes
사전에 궁금한거
- Docker 란?
- Docker 이미지 의 역할은?
- DockerFile 이란?
- DockerFile 사용법
- Dockerizing 이란?
위 5개가 궁금해서 찾아보게 되었다!
1.Docker 란?
공부 전 | 공부 후 | |
내용 | - 컨테이너 단위로 프로세스를 실행하는 체계이다. - OS 와 패키징된 소스의 묶음인 이미지를 가지고 컨테이너단위로 프로세스를 띄워서 일반 VM 보다 독립적이고, 가볍고 빠르게 서버를 띄울 수있다. |
- "리눅스 컨테이너"를 만들고 사용할 수있게 하는 컨테이너 기술이다. - Docker 를 사용하면 컨테이너를 매우 가벼운 모듈식 가상머신처럼 사용할 수있다. - Docker 기술은 Linux 커널, Cgroup, 네임스페이스등의 커널의 기능을 사용하여 프로세스를 분리 함으로써 독립적으로 실행할 수있게한다. 출처: https://www.redhat.com/ko/topics/containers/what-is-docker |
2.Docker 이미지의 역할은?
공부 전 | 공부 후 | |
내용 | 이미지는 특정 소프트웨어의 버전과 기능을 하나의 패키지로 압축한 형태이다. 예를들어 python 이미지를 압축했다면 그 이미지를 도커에서 실행시켰을때, 소프트웨어에서 제공하는 기능을 사용할 수있다. 이때 도커의 장점은 어느 운영체제든간에 이미지를 실행시키면 일관성있게 동작한다는 것이다. |
- Docker 는 컨테이너에 소프트웨어를 패키징하는 플랫폼이다. - Docker 이미지는 컨테이너에 애플리케이션을 실행하는 라이브러리, 종속성이 포함된 패키지다. (= Docker 이미지는 컨테이너 생성에 필요한 지침이 적힌 읽기전용 템플릿이다.) - 높은 호환성: 컨테이너를 사용하면 환경에 상관없이 모든 대상시스템에 어플리케이션을 실행시킬 수있다. |
의문 | 컨테이너가 어떻게 동작하길래 운영체제와는 별개로 독립적으로 작동할 수있는건지 궁금하다. |
3. DockerFile 이란?
공부 전 | 공부 후 | |
내용 | dockerfile 자체는 From ~ 절로 시작해서 RUN, CMD , Entrypoint 등의 명령어를 쓴다. |
Docker 에서 이미지를 생성하기 위한 스크립트 파일이다. Dockerfile 을 작성 후 빌드하면 dockerfile에 적힌 스크립트가 순서대로 실행된다. |
4.Dockerfile 명령어 구성
명령어 | 역할 | 예시 출처: https://github.com/tiangolo/uwsgi-nginx-flask-docker/blob/master/docker-images/python3.11.dockerfile |
FROM | base 이미지로 쓸 이미지 선언 | FROM tiangolo/uwsgi-nginx:python3.11 |
LABEL | 라벨링 | LABEL maintainer="Sebastian Ramirez <tiangolo@gmail.com>" |
COPY | 파일 복사 | COPY requirements.txt /tmp/requirements.txt |
WORKDIR | 작업디렉토리가 없으면 생성하고, 있다면 작업디렉토리에서 명령어를 수행한다. CD 와 동일 | WORKDIR /app |
RUN | 새로운 레이어에서 명령어를 생성하고 새로운 이미지를 생성한다. | RUN pip install --no-cache-dir -r /tmp/requirements.txt RUN chmod +x /entrypoint.sh |
CMD | 컨테이너가 시작할때 실행하는 명령어 (dockerfile에서 한번만 실행가능) RUN 은 이미지를 빌드할떄 사용하고 CMD 는 이미 만들어진(빌드완료된) 이미지에서 실행할때 쓰는 명령어다. CMD는 한 도커파일내 CMD 가 여러번 나올경우 마지막 CMD만 유효하다. |
CMD ["/start.sh"] |
ENTRYPOINT | CMD 와 동일하게 컨테이너 시작시 실행하나 CMD는 param으로 대체 가능하나 entrypoint 는 대체 할수없다. ENTRYPOINT도 CMD와 동일하게 여러개일경우 마지막 명령어만 유효하다. |
ENTRYPOINT ["/entrypoint.sh"] |
5.Dockerizing 이란?
도커 라이징이란 Docker 컨테이너를 사용해서 응용프로그램을 패킹 , 배포 , 실행하는 전과정을 말한다.
'Kubernetes' 카테고리의 다른 글
Cloud Native Korea Community Day 2024 다녀와서.. (0) | 2024.09.29 |
---|---|
프로메테우스 모니터링의 범주와 흐름 (0) | 2024.08.20 |
openshift pod 에 umask 설정하는법 (0) | 2024.03.26 |
쿠버네티스 인 액션 10장 ( Statefulset ) (0) | 2023.09.09 |
쿠버네티스인 액션 6장 볼륨 (0) | 2023.08.19 |