도커에서 컨테이너를 생성하기 위하여 이미지가 필요로 합니다. 이미지를 생성하는 방법으로 도커파일을 활용할 수 있습니다. 도커파일은 무엇이고 이미지는 어떻게 생성하는지 알아보도록 하겠습니다.
목차
도커파일이란?
도커파일 작성 방법
이미지 생성 방법
빌드 컨텍스트란?
도커파일이란?
도커파일은 도커 이미지를 생성하기 위한 레시피로, 컨테이너 이미지의 구성과 실행방법을 정의합니다. 도커파일은 일련의 명령어와 지침으로 이루어져 있으며, 이미지 빌드 과정을 자동화하고 이미지를 일관되게 생성하는 데 사용됩니다.
도커파일 작성 방법
도커 파일을 작성할 때 다양한 명령어를 이용하여 이미지를 구성합니다. 그중 몇 가지를 소개드리고 도커 파일을 작성하여 이미지를 생성하는 과정과 생성된 이미지를 실행하는 것을 보여드리겠습니다.
도커파일 명령어
FROM : 베이스가 될 이미지를 선택하는 명령어입니다. 베이스 이미지는 운영체제와 필요한 환경을 제공하기 때문에 도커파일의 시작에 FROM 명령어를 작성해주셔야 합니다.
# Ubuntu 20.04를 베이스 이미지로 선택
FROM ubuntu:20.04
WORKDIR : 컨테이너 내에서 작업 디렉터리를 설정합니다. 모든 후속 명령어는 이 디렉터리 내에서 실행됩니다.
# 후속 명령어를 /app에서 실행
WORKING /app
COPY : 로컬 파일을 컨테이너 이미지로 복사합니다. 애플리케이션 코드, 구성 파일 등을 복사할 수 있습니다.
# app.go를 컨테이너 내부의 /app/에 복사
COPY app.py /app/
RUN : 컨테이너 내에서 명령을 실행하고 이미지에 결과를 적용합니다. 이를 통해 소프트웨어 설치, 라이브러리 설치 등을 수행할 수 있습니다.
# APT를 업데이트하고 python3 패키지 설치
RUN apt-get update && apt-get install -y python3
ENV : 컨테이너 내부에서 사용할 환경 변수를 정의하거나 구성합니다.
# DB_HOST라는 환경변수에 localhost를 DB_PORT라는 환경변수에 5432를 설정
ENV DB_HOST=localhost DB_PORT=5432
CMD : 컨테이너가 시작될 때 실행될 명령을 지정합니다. 컨테이너 실행 시에 실행되는 기본 애플리케이션을 설정하는 데 사용됩니다.
#python3 인터프리터를 실행 후 app.py 스크립트 실행
CMD ["python3", "app.py"]
이미지 생성 방법
이미지를 생성하는 데 사용한 예시 코드는 아래의 github 주소에 올려두었습니다.
https://github.com/rainbow96bear/golang_practice/tree/master/docker/dockerfile_sample
이미지를 생성하기 전에 'docker images' 명령어를 사용하여 현재 이미지의 목록을 확인하였습니다.
도커파일 예시
# 기반 이미지를 설정
FROM golang:1.16
# 작업 디렉토리를 설정
WORKDIR /app
# 현재 디렉토리의 파일들을 컨테이너 내부의 /app 디렉토리로 복사
COPY . /app
# Go mod를 초기화
RUN go mod init myapp
# Go 애플리케이션을 빌드
RUN go build -o myapp
# 컨테이너가 실행될 때 실행할 명령어를 설정
CMD ["./myapp"]
Go 언어 예시
package main
import "fmt"
func main() {
fmt.Println("Hello, Docker!")
}
이미지 생성
같은 디렉터리 안에 두 파일을 생성해 두고 이미지 생성 명령어를 입력합니다. 이미지를 생성하는 명령어는 아래와 같습니다.
docker build -t [이미지 명] [도커파일 경로]
저는 test/golang이라는 이미지 이름과 현재 폴더에 도커파일이 존재하여 'docker build -t test/golang .'을 실행하였고 아래와 같은 화면과 함께 이미지 생성이 되었습니다.
생성된 이미지를 확인하는 방법은 아래의 명령어를 입력하시면 됩니다.
docker images
위에서 확인하였을 때 4개였던 이미지가 5개가 된 것을 볼 수 있습니다.
생성한 이미지로 컨테이너를 실행하면 아래와 같이 go 언어로 작성한 내용이 실행되는 것을 확인할 수 있습니다.
빌드 컨텍스트란?
빌드 컨텍스트는 Docker 이미지를 빌드할 때 도커파일과 함께 사용되는 디렉터리 및 파일의 세트를 의미합니다. Docker 이미지를 빌드할 때, Docker 엔진은 현재 작업 중인 디렉터리를 기반으로 빌드 컨텍스트를 생성하며, 빌드 컨텍스트는 COPY 및 ADD와 같은 명령어를 사용하여 파일 및 디렉터리를 이미지로 복사할 수 있습니다.
위의 이미지 생성 예시의 경우 Go언어 파일이 빌드 컨텍스트가 됩니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] 도커 컴포즈 활용하기 (YAML 작성) (0) | 2023.09.18 |
---|---|
[Docker] commit 명령어를 이용한 이미지 생성 (0) | 2023.09.16 |
[Docker] Docker 포트 설정과 브릿지 네트워크 생성, 연결 (0) | 2023.09.09 |
[Docker] Docker 볼륨 이해하기 (데이터 공유, 관련 명령) (0) | 2023.09.08 |
[Docker] Docker(도커) 시작하기 (설치, 기본 명령어, Docker desktop) (0) | 2023.09.08 |