FROM <image>:<tag>
ex) FROM node:12.18.4
FROM (이미지)
본인이 만드려고 하는 도커 이미지의 기반이 되는 공식 이미지.
RUN ["<command>", "<parameter>", "<parameter>", ..]
ex) RUN ["npm", "install", "-g", "http-server"]
RUN <전체커맨드>
ex) RUN npm install -g http-server
RUN (명령어)
이미지를 생성하는 과정에서 실행할 명령어.
(위에서 FROM으로 node.js를 불러왔으니, npm 명령어가 먹힘)
WORKDIR <PATH>
ex) WORKDIR /home/node/app
WORKDIR (경로)
이미지 내에서 명령어를 실행할 위치를 설정. 터미널의 cd 명령어와 같다고 보면 됨.
ENTRYPOINT <전체커맨드>
ex) ENTRYPOINT npm start
ENTRYPOINT ["<command>", "<parameter>", "<parameter>", ..]
ex) ENTRYPOINT ["npm", "start"]
ENTRYPOINT (명령어)
이미지를 컨테이너로 실행 시, 항상 실행되는 고정 명령어 설정.
ENTRYPOINT 명령문은 도커 이미지를 하나의 실행 파일처럼 사용할 때 유용함.
컨테이너 실행 시, ENTRYPOINT 커맨드로 실행된 프로세스가 죽을 때, 컨테이너도 따라서 종료되기 때문.
CMD <전체커맨드>
ex) CMD yarn start
CMD ["<command>", "<parameter>", "<parameter>", ..]
ex) CMD ["yarn", "start"]
CMD (명령어)
컨테이너 실행 시 기본값으로 실행할 명령어.
단 한 번만 사용 가능하며, 여러 번 사용되었을 경우엔 마지막 CMD만 실행.
docker run (이미지) (커맨드)와 같이 커맨드를 포함하여 실행 시, 기본값으로 실행되는 CMD 라인 부분은 무시됨.다음과 같이, ENTRYPOINT 명령어와 같이 쓰이기도 함.
ENTRYPOINT <command> CMD ["<parameter>", "<parameter>", ..] ex) ENTRYPOINT ["node"] CMD ["index.js"]
COPY <src>... <dest>
- package.json 파일만 복사
ex) COPY package.json package.json
- 이미지를 빌드한 디렉토리의 모든 파일을 컨테이너의 app/ 디렉토리로 복사
ex) WORKDIR app/
COPY . .
첫 번째 .은 모든 파일을 의미
두 번째 .은 현재 WORKDIR을 의미
COPY (복사할 파일) (복사한 파일을 이미지에 복사할 위치)
호스트 컴퓨터에 있는 디렉토리나 파일을 도커 이미지의 파일 시스템으로 복사.
절대 경로, 상대 경로 둘 다 사용 가능. 단, 상대 경로 사용 시, 현재 WOKRDIR 어딘 지 파악해야함.
ADD <src>... <dest>
ex) ADD text.txt /home
/home/text.txt 생성
ADD (복사할 파일) (복사한 파일을 이미지에 복사할 위치)
위의 COPY 명령어와 기본적으로 동일하나, 두 가지 추가적인 기능이 있음.
- Remote URL
원격의 외부 파일을 URL 지정으로 복사할 수 있음.
ex) ADD http://test.com/hello.txt /home/hello/- Auto-Extraction
.tar 또는 .tar.gz와 같은 압축 파일을 자동 압축 해제하여 복사할 수 있음.
ex) ADD hello.tar.gz /