본문 바로가기

개발/Docker

[Docker] DockerFile로 부터 이미지 생성

Docker에서 docker build라는 명령어를 사용하여 DockerFile로 부터 이미지를 생성할 수 있습니다.

 

$ docker build 옵션 Dockerfile경로

 

주요 옵션:

-t, --tag=””: 저장소 이름, 이미지 이름, 태그를 설정할 수 있습니다. 옵션 뒤에 <저장소 이름>/<이미지 이름>:<태그> 형식으로 적어주면 됩니다.

 

 

ex)

1) DockerFile 작성

FROM node:10.16.0
COPY package.json /src/package.json
RUN  cd /src; npm install
COPY . /src
EXPOSE 80
WORKDIR /src

CMD node bin/www.js

FROM <이미지>: 이미지로 부터 시작

COPY <복사할 파일 경로> <이미지에서 파일이 위치할 경로>: 파일을 복사

RUN <명령어>: 직접 쉘 명령어를 실행하도록 함

EXPOSE <포트 번호>: 가상 머신에 오픈할 포트를 지정

WORKDIR <폴더명>: 명령어를 실행시킬 Working Directory 지정

RUN <명령어>: 현재 이미지에서 새로운 Layer를 만들어 명령어 실행 후 결과를 commit(저장) 후 새로 만들어진 이미지를 기반으로 DockerFile의 다음 스텝을 실행

CMD <명령어>: 도커 파일에 하나만 존재해야 하는 명령어로 여러 개 있을 경우 마지막 CMD 만 유효. 컨테이너를 실행하면서 기본적으로 실행되는 defaults를 제공할 수 있음

 

 

2) DockerFile 빌드 및 이미지 확인

docker build --tag amazon/nodejs:0.1 .
docker images

 

3) Docker 이미지 실행 및 컨테이너(실행된 이미지) 확인

$ docker run --name amazon-instance -p 80:80 amazon/nodejs:0.1
$ docker ps

 

 

 

참고)

도커 공식 문서

https://docs.docker.com/engine/reference/builder/

 

| Docker Documentation

Dockerfile reference Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on...

docs.docker.com

도커 build 명령어

http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter20/02

 

가장 빨리 만나는 Docker 20장 - 2. build

 

pyrasis.com

도커 image와 container 차이

https://stackoverflow.com/questions/23735149/what-is-the-difference-between-a-docker-image-and-a-container

 

What is the difference between a Docker image and a container?

When using Docker, we start with a base image. We boot it up, create changes and those changes are saved in layers forming another image. So eventually I have an image for my PostgreSQL instance a...

stackoverflow.com