Dockerfile & Docker Compose 사용하기

2024. 8. 20. 15:22·DevOps
728x90
반응형

 

Dockerfile

 

 

Dockerfile : 컴퓨터에서 돌아가는 앱을 만들기 위한 레시피 같은 존재. Dockerfile을 토대로 DockerImage 생성 가능. DockerImage는 앱을 실행하는데 필요한 모든 것을 담고 있다.

 

Dockerfile 예제 >

# Dockerfile
FROM ubuntu:latest
MAINTAINER Your Name <your-email@example.com>
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

 

위 Dockerfile은 Ubuntu 최신 버전을 기반으로 nginx를 설치하고 index.html 파일을 nginx의 html 디렉토리에 복사한다는 내용이다.

Dockerfile의 명령어

  • FROM : 베이스 이미지를 선택.
  • MAINTAINER : 이미지를 만든 사람의 정보 입력
  • LABEL : 이미지에 메타 데이터 추가
  • RUN : 이미지에 명령을 실행하여 파일을 추가하거나 삭제
  • COPY : 파일을 이미지에 복사
  • ENTRYPOINT : 컨테이너 시작할 때 실행할 명령어 입력
  • ENV : 환경 변수 설정
  • EXPOSE : 컨테이너가 노출할 포트 설정
  • CMD : 컨테이너가 실행될 때 실행할 명령을 설정
  • WORKDIR : 작업 디렉토리 지정
  • USER : 사용자 설정

 

Docker 이미지 생성하기

docker buildx build -t my-nginx:latest .
docker build -t my-nginx:latest . # 위 명령이 실행되지 않는 경우 실행

 

위 명령어는 현재 디렉토리에서 Dockerfile을 기반으로 my-nginx:latest 라는 이름의 Docker 이미지를 생성하는 예제

 

docker run -d -p 80:80 my-nginx:latest

 

위 명령어는 my-ngnix:latest 이미지를 기반으로 컨테이너를 실행하고, 80번 포트를 호스트 머신의 80번 포트로 맵핑하는 예제

 

docker stop my-nginx

 

위 명령어는 my-nginx라는 이름의 컨테이너를 종료하는 예제

이렇게 생성된 Docker 이미지는 Docker 레지스트리를 사용하여 다른 사용자와 공유할 수 있다.

 


 

Docker Compose

Docker Compose를 사용하면 여러 컨테이너를 더 쉽게 관리하고, 자동으로 설정하고 보안을 강화할 수 있다.

docker-compose.yml 파일 하나로 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의 할 수 있다.

 

Docker Compose 실행하기

  1. 각 애플리케이션의 Dockerfile 작성하기
  2. docker-compose.yaml 파일 작성하기 : 내가 만든 애플리케이션을 실행하기 위해 필요한 database라든지 redis라든지 다른 서비스들을 한꺼번에 정의하는 파일 작성
  3. docker compose up 명령어로 실행

 

YAML 파일

YAML 파일 : 컴퓨터가 읽을 수 있는 설정 파일. 

  • 키-값 쌍: 키와 값으로 이루어진 쌍으로 구성됩니다. 키와 값은 콜론(:)으로 구분.
  • 리스트: 쉼표(,)로 구분된 값들의 리스트로 구성.
  • 딕셔너리: 중괄호({})로 둘러싸인 키-값 쌍의 리스트로 구성.
  • 불린 값: true, false, yes, no 등의 값으로 표현.
  • 문자열: 큰 따옴표("")나 작은 따옴표('')로 둘러싸인 문자열로 표현.

 

Docker Compose 파일 구조

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  app:
    build: .
    ports:
      - "8081:8080"
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

 

  • version: Docker Compose 파일의 버전을 지정합니다.
  • services: 애플리케이션의 각 서비스를 정의합니다.
  • web, app, db: 각각의 서비스 이름입니다.
  • image: 서비스를 실행할 Docker 이미지를 지정합니다.
  • build: Dockerfile이 있는 디렉토리 경로를 지정하여 이미지를 빌드합니다.
  • ports: 호스트와 컨테이너 간의 포트를 매핑합니다.
  • depends_on: 다른 서비스가 먼저 실행되어야 하는 순서를 지정합니다.
  • environment: 컨테이너의 환경 변수를 설정합니다.

 

Docker Compose 명령어

docker compose up : docker-compose.yml 파일에 정의된 서비스를 빌드하고 시작한다. 만약 이미 빌드된 이미지가 존재한다면 이를 사용. 백그라운드에서 사용하려면 d 옵션 추가

docker-compose up -d

 

docker compose down : 실행 중인 모든 서비스를 중지하고 컨테이너, 네트워크, 볼륨 등을 정리한다.

docker compose build : docker-compose.yml 파일에 정의된 서비스를 빌드한다.

docker compose ps : 현재 실행 중인 서비스를 확인한다.

docker compose logs : 실행 중인 서비스의 로그를 확인한다.

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'DevOps' 카테고리의 다른 글

[✉️ Kafka] Kafka 이해하기2 - Zookeper, Broker, Message  (2) 2024.09.27
[✉️ Kafka] Kafka 이해하기1 - Producer, Consumer, Topic, Partition  (0) 2024.09.27
Docker로 pgAdmin 띄워서 PostgreSQL 손쉽게 활용하기  (1) 2024.09.25
Redis와 NoSQL, Redis의 데이터 타입 이해하기  (0) 2024.08.21
CI/CD와 Docker 이해하기  (0) 2024.08.17
'DevOps' 카테고리의 다른 글
  • [✉️ Kafka] Kafka 이해하기1 - Producer, Consumer, Topic, Partition
  • Docker로 pgAdmin 띄워서 PostgreSQL 손쉽게 활용하기
  • Redis와 NoSQL, Redis의 데이터 타입 이해하기
  • CI/CD와 Docker 이해하기
waVwe
waVwe
    반응형
  • waVwe
    waVwe 개발 블로그
    waVwe
  • 전체
    오늘
    어제
    • ALL (184)
      • Python (1)
      • Spring (15)
      • DevOps (10)
      • Git (6)
      • JAVA (4)
      • C (22)
      • 코테 문제 풀이 (124)
        • 프로그래머스 (43)
        • 백준 (2)
        • 정올 (64)
        • SW Expert Academy (1)
        • 온코더 oncoder (14)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 🐙 Github
  • 공지사항

  • 인기 글

  • 태그

    내일배움캠프
    MSA
    이진트리
    자료구조
    온코더
    devops
    Til
    연결리스트
    아파치카프카
    스프링
    C언어
    while문
    스파르타코딩
    형변환
    알고리즘
    스프링부트
    스파르타코딩클럽
    CI/CD
    java
    springboot
    progate
    docker
    깃헙
    자바
    C
    코테
    정올
    도커
    깃
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
waVwe
Dockerfile & Docker Compose 사용하기
상단으로

티스토리툴바