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 실행하기
- 각 애플리케이션의 Dockerfile 작성하기
- docker-compose.yaml 파일 작성하기 : 내가 만든 애플리케이션을 실행하기 위해 필요한 database라든지 redis라든지 다른 서비스들을 한꺼번에 정의하는 파일 작성
- 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 : 실행 중인 서비스의 로그를 확인한다.
'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 |