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 |