반응형
COMMAND | Description | COMMAND | Description |
FROM | 베이스이미지 지정 | ADD | 파일추가(외부파일 불러오기) |
MAINTAINER | 작성자 지정 | COPY | 파일복사: Local디렉토리 |
RUN | 명령어 실행 | VOLUME | 볼륨마운트 |
CMD | 데몬 실행 | ENTRYPOINT | 데몬 실행: CMD보다 우선적 |
LABEL | 라벨설정 | USER | 사용자 지정 |
EXPOSE | 포트 내보내기 | WORKDIR | 작업디렉토리 지정 |
ENV | 환경변수 설정 | ONBUILD | Build 후 실행명령 |
좀 더 설명 드리자면 아래와 같습니다.
FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
RUN : Shell Script 또는 명령을 실행
CMD : 컨테이너가 실행되었을 때 명령이 실행
ADD : 파일 / 디렉터리 추가 ADD 같은 경우는 http로도 복사가 가능하다. http://source.file/url /destination/path
COPY : 파일 복사 Local디렉터리파일:컨테이너 내부디렉터리 example) /var/www/html/index.html /opt/html/index.html
ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
USER : 명령 실행할 사용자 권한 지정
WORKDIR : 이동 할 디렉터리 지정
Shell 방식
cmd yum install -y httpd
Exec 방식
cmd [“/bin/bash”, “-c”, “yum install -y httpd”]
제가 궁금했던 점이 있었습니다.
Dockerfile을 작성하면서 FROM: python, FROM: nodejs 등에 이미지를 Pull 해서 작성하는 경우가 많다 근데 왜 어떻게 RUN mkdir 이런 리눅스에서 사용하는 언어가 가능한걸까? 이유는 단순하다. 이런 이미지들이 대부분 linux 또는 unix 로 이루어져서 기본 명령어가 내장되어 있기 떄문이다.
CMD, ENTRYPOINT 차이점
ENTRYPOINT와 CMD는 같은 데몬을 실행하는데 뭐가 다르다는거지? 라는 의문을 가져올 수 있다.
바로 차이점은 컨테이너 시작시 실행 명령에 대한 Default 지정 여부이다.
**Default 지정여부가 무엇일까?** **
지정 여부는 Container가 실행시 받은 인자로 지정한 명령을 실행하는 것을 말한다.결과를 봐서 해보자(아래 확인). 즉, 차이점을 더 깊게 설명하자면 CMD옵션을 사용시 추가 인자 값을 대입하면 기존에 있던 명령을 추가 인자 값으로 변경하지만, ENTRYPOINT같은 경우는 기존에 인자 값에다가 + 추가 인자 값을 더해주는 과정이다.
ENTRYPOINT [COMMAND] - 실행할 명령어 지정
CMD [PARAMETER] - 명령어를 실행하는데, 파라미터로 넘기는 값을 지정
CMD
docker inspect skills
....
"Cmd": [
"ps",
"-aef"
],
...
ENTRYPOINT
docker inspect skills
...
"Cmd": null,
...
"Entrypoint": [
"/bin/df",
"-h"
],
...
#CMD는 null로 설정 되어있다.
ADD, COPY 차이점
Dockerfile을 보면 비슷한 개념에 옵션이 있을 것이다. ADD, COPY 또는 ENTRYPOINT, CMD가 제일 비슷한 개념인 거 같아 근데 차이점은 ADD는 외부에서 파일을 가져올 수 있으나 COPY 옵션같은 경우는 Local에서밖에 파일을 못가져온다는 점이다.
ADD
FROM amazonlinux:2
.
.
.
ADD github.com/skills .
이런식으로 외부 즉, URI를 가져와서 사용할 수 도 있다.
COPY
FROM amazonlinux:2
.
.
.
COPY localdirect .
이제 Dockerfile을 야무지게 작성해보자!!
반응형
'2022년 전에 정리한 문서들' 카테고리의 다른 글
Golang Command in Linux (0) | 2022.08.19 |
---|---|
Golang 기초 정리 (0) | 2022.08.19 |
Docker Command (0) | 2022.08.19 |
Codebuild Buildspec.yml File 조건문 사용 (0) | 2022.08.10 |
Kinesis ERROR (0) | 2022.08.08 |