[Docker] 1. Docker?

2024. 11. 13. 22:08·Docker

Docker?

  • GO 언어로 작성된 애플리케이션을 빠르고 효율적으로 배포, 실행 및 관리할 수 있도록 도와주는 오픈 소스 플랫폼
  • 컨테이너화된 애플리케이션을 통해 개발, 테스트, 배포 과정에서 일관성과 효율성 제공

Docker Container

  • 애플리케이션을 실행하기 위한 독립적이고 분리된 공간
  • 자체 파일 시스템(Volume) 보유

장점

  • 애플리케이션을 실행하기 위한 독립적, 분리된 공간을 제공하기에, 다수의 애플리케이션을 각 컨테이너단에서 독립적으로 실행 가능
  • 적은 리소스 소모(lightweight)
  • Host OS 사용 -> 추가적인 OS 설치가 없기에 빠르게 실행
Host OS 지원 컨테이너 OS
MAC 경량화 Linux VM
Windows Windows, Linux
Linux Linux


단점

  • Host OS를 사용하기에 Cross-platform Compatibility을 항상 보장 X
  • GUI 소프트웨어 개발에 미적합

Docker Image

  • 실행할 수 있는 애플리케이션, 라이브러리, 종속성 설정 등을 포함하는 읽기 전용 템플릿
  • Container를 통해 Docker Image안의 애플리케이션(소프트웨어)을 실행

구성 요소

  • 기본 OS와 같은 애플리케이션(소프트웨어)의 실행 환경
  • 소프트웨어가 필요로하는 라이브러리
  • 환경 설정 변수 : 빌드 시 실행, 실행 시 실행 2가지
  • 메타 데이터 : Docker Image에 대한 정보

Dockerfile

  • Docker 이미지를 자동으로 빌드하는 데 필요한 명령어를 포함한 텍스트 파일
  • 애플리케이션 환경 설정 및 패키지, 의존성 설치 후 Docker Image 생성 가능

키워드

  • FROM : OS(이미지) 종류
FROM ubuntu:latest
  • RUN : Docker Image에서 명령을 실행하여 필요한 패키지, 파일을 설치하는 데 사용
RUN apt-get update && apt-get install -y python3
  • COPY : Host에서 파일이나 디렉터리를 Docker Image 내의 특정 위치로 복사
COPY ./app
  • ADD : COPY와 유사하지만, 파일 복사 시 URL을 사용할 수 있고, 압축된 파일 자동 압축 해제 가능
ADD ./app.tar.gz
  • WORKDIR : 이후 명령어가 실행될 작업 디렉터리를 설정하여, [RUN, CMD, ENTRYPOINT] 등이 실행되는 기본 경로 설정
WORKDIR /app
  • CMD & ENTRYPOINT
    • CMD : 컨테이너 실행 시 기본적으로 실행되는 명령어 지정, 여러개를 작성해도 마지막 것으로 작동
    • ENTRYPOINT : CMD와 기본적으로 흡사하지만, 보다 높은 우선순위이며, --entrypoint 옵션을 통해서만 변경 가능! 
# 두 키워드를 같이 사용 시, ENTRYPOINT가 기본 명령이 되고, CMD가 파라미터로 실행 
ENTRYPOINT ["entrypoint1.sh"] CMD ["param1", "param2"]
  • EXPOSE : 컨테이너가 실행될 때 열리는 서비스 포트번호
EXPOSE 8080
  • ENV : 컨테이너 내에서 사용되는 환경변수로, 최종 이미지에 저장
ENV APP_ENV=production
  • ARG : Docker Image를 빌드 시 사용할 수 있는 매개변수 정의, 최종 이미지에는 저장 X
ARG VERSION=1.0
저작자표시

'Docker' 카테고리의 다른 글

[Docker] 6. docker-compose.yml?  (1) 2024.11.15
[Docker] 5. Docker Compose?  (0) 2024.11.15
[Docker] 4. Volume? Mount?  (0) 2024.11.14
[Docker] 3. Docker Hub?  (0) 2024.11.13
[Docker] 2. Docker 기본 명령어  (1) 2024.11.13
'Docker' 카테고리의 다른 글
  • [Docker] 5. Docker Compose?
  • [Docker] 4. Volume? Mount?
  • [Docker] 3. Docker Hub?
  • [Docker] 2. Docker 기본 명령어
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Airflow
    데브코스
    티스토리챌린지
    프로그래머스
    cloud
    Azure
    Java
    데이터 엔지니어링 데브코스 4기
    자바
    파이썬
    초보개발자
    에어플로우
    aws
    오블완
    프로그래밍
    데이터 엔지니어
    Python
    데이터 엔지니어링 데브코스
    TiL
    부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Docker] 1. Docker?
상단으로

티스토리툴바