Dockerfile 문서를 만들어서 터미널에서 docker build 명령어를 실행하면 이미지가 생성된다.
Dockerfile 은 이미지를 생성하는 방법에 대한 기술 문서이다.
이 문서를 실행하는 명령어는 `docker image build` 이다.
생성된 이미지는 `docker container run` 명령어를 통해서 실행된다.
Dockerfile 기본구조
생성하기
touch Dockerfile
작성하기
FROM node:12.18.4
RUN npm install -g http-server
WORKDIR /home/node/app
CMD ["http-server", "-p", "8080", "./public"]
- RUN: 이미지를 생성하는 과정에서 실행되는 명령어
- CMD: 만든 이미지에서 컨테이너가 만들어져 가동될때 기본적으로 바로 실행되는 명령어
- Dockerfile 은 파일 확장자가 없다.
이미지 생성하기
docker image build -t my-node:12.18.4 ./
Dockerfile 에서 사용하는 명령어
- FROM
- RUN
- COPY
- CMD
- WORKDIR
Dockerfile 의 필요성과 유용성
- 컨테이너 내에서 수행한 작업은 컨테이너가 종료되면 모두 사라집니다.
- 이미지는 실제 형태가 없으며, 레이어라는 정보의 쌓임으로 구성됩니다.
- 그러나 Docker Hub 에 있는 공식 이미지는 가볍게 유지하기 위해 최소한의 레이어만 쌓여 있으며 매우 기능이 제한적이다. 예를 들어 Ubuntu 컨테이너에는 vi 나 curl 이 포함되어 있지 않다.
- 따라서 "공식 이미지로는 충분한 설정을 얻을 수 없는 경우 미리 필요한 설정을 마친 이미지를 직접 만들어 두는" 접근 방식을 취하게 됩니다.
- Dockerfile 은 기존 이미지에 추가 레이어를 쌓을 수 있으므로 OS 설정과 같은 작업을 간편하게 수행할 수 있다.
이미지 생성 및 실행
# 추천 명령어
docker image build [옵션] <경로>
# 이전 명령어
docker build [옵션] <경로>
docker build -t front-img ./
> 현재 경로에 있는 Dockerfile 로 front-img 라는 이미지를 생성
옵션 설명:
`-f, --file`: Dockerfile을 지정합니다. 여러 개의 Dockerfile을 사용할 때 유용합니다.
`-t, --tag`: 빌드 결과에 태그를 부여합니다. 사람들이 쉽게 이해할 수 있도록 합니다.
이미지 레이어 확인하기
docker image history [옵션] <이미지>
docker history [옵션] <이미지>
> 컨테이너가 생성된 경우에 확인 할 수 있음.
Dockerfile 실습하기
1. Dockerfile 파일만들기
ubuntu 베이스 이미지에 vim 패키지를 설치하고 vim 설정 파일을 이미지에 복사하고 컨테이너가 실행되면 자동으로 vi 에디터가 실행되도록 만드는 실습이다.
1. Dockerfile 생성하기
2. FROM 베이스 이미지 지정하기
3. RUN 을 이용해서 패키지 설치하기
4. COPY 로 호스트 파일을 이미지에 복사하기
5. CMD 명령어로 컨테이너 실행 이후 수행해야 할 명령어 입럭
Dockerfile 내용
FROM ubuntu:24.04
RUN apt update
RUN apt install -y vim
COPY .vimrc /root/.vimrc
CMD date +"%Y/%m/%d %H:%M:%S ( UTC )"
.vimrc 생성 및 내용
set number
2. 이미지 빌드
docker image build \
--tag my-ubuntu:date \
./
3. 이미지 확인
docker image ls
4. 컨테이너 만들기
docker container run \
--name my-ubuntu1 \
--rm
my-ubuntu:date
vi 실행시키기
docker container run \
--name my-ubuntu1 \
--rm \
my-ubuntu:date \
vi
여러개의 Dockerfile 다루기 (폴더구분)
다음과 같은 폴더 구조가 있다고 가정해보자.
.
`-- docker
`-- date
|-- .vimrc
`-- Dockerfile
build 는 다음과 같이 해야 한다.
docker image build \
--tag my-ubuntu:date \
--file docker/date/Dockerfile \
docker/date
--file 옵션은 상대 경로를 사용해야 한다.
docker/date 는 COPY 명령어에서 사용되는 상대 경로이다.
예를 들어 COPY .vimrc /root/.vimrc의 경우 .vimrc는 실행 디렉토리의 <path>/.vimrc로 해석됩니다.
'Docker' 카테고리의 다른 글
Docker > Solving SQLSTATE[HY000] [1045] Access Denied Error (0) | 2025.01.29 |
---|---|
var/www/app:delegated 에 대해서 (0) | 2025.01.24 |
도커에서 laravel 프로젝트 다운로드 하기 (0) | 2025.01.23 |
8.2-fpm과 8.2-fpm-alpine 차이점 (0) | 2025.01.21 |
도커에 Nginx + Laravel 세팅방법 (Laravel11) (0) | 2025.01.19 |