* Dockerfile

- 인프라 구성을 기술한 파일 (실행 기반이 되는 모든 구성 정보)


명령

 인수

 FROM

 Base 이미지 지정

 RUN

 명령 실행

 CMD

 컨테이너 실행 명령

 LABEL

 라벨 설정

 EXPOSE

 포트 export

 ENV

 환경변수

 ADD

 파일/디렉토리 추가

 COPY

 파일 복사

 ENTRYPOINT

 컨테이너 실행명령

 VOLUME

 볼륨 마운트

 USER

 사용자 지정

 WORKDIR

 작업 디렉토리

 ARG

 Dockerfile 안의 변수

 ONBUILD

 빌드 완료 후, 실행되는 명령

 STOPSIGNAL

 System Call Signal 설정

 HEALTHCHECK

 Container Health check

 SHELL

 기본 쉘 설정

 #

 주석


    

* FROM (Mandatory)

FROM [이미지명]

FROM [이미지명]:[태그명]

FROM [이미지명]@[다이제스트]


* Dockerfile로부터 Docker Image 만들기

docker build -t [생성할 이미지명]:[태그명] [Dockerfile의 위치]

docker build -t [생성할 이미지명]:[태그명]

docker build -f [Dockerfile 명] [Dockerfile의 위치]

                                        . -> Current Directory

- [옵션]

: --no-cache : 중간 이미지 미사용

  (명령 한줄마다 중간 이미지가 생성됨. 따라서, 불필요한 중간 이미지 생성을 피하기 위해서는 명령어를 한 줄에 작성하면 좋다)


* RUN

RUN [SHELL 명령]

RUN [EXEC 형식]

e.g.) RUN ["/bin/bash", "-c", "echo 'Hello' "]

- 이미지 작성을 위한 명령


* CMD

CMD [SHELL 명령]

CMD [EXEC 형식]

- 생성된 컨테이너 안에서 명령을 실행

- docker container run 명령 수행 시, 새로운 명령을 지정하면 CMD 명령은 Overwrite 됨


* YUM (Yellowdog Updator Modified)

- Centos, Fedora 와 같은 Redhat 계열 distribution에서 이용하는 pkg 관리 시스템


* APT(Advanced Packaging Tool)

- Debian, Ubuntu 와 같은 Debian 계열 distribution 에서 이용하는 pkg 관리 시스템


* ENTRYPOINT

ENTRYPOINT [SHELL 명령]

ENTRYPOINT [EXEC 형식]

- docker container run 명령 실행 시, 실행됨

- CMD 와 다르게 docker container run 명령 수행 시, 지정한 명령은반드시 컨테이너에서 실행됨


* ONBUILD

ONBUILD [명령]

- 그 다음 빌드에서 실행할 명령을 이미지 안에 설정하기 위한 명령


* STOPSIGNAL

STOPSIGNAL [시그널]

- 종료할 때에 송신하는 시그널을 설정


* HEALTHCHECK

HEALTHCHECK [옵션] CMD [명령]

- 컨테이너 안의 프로세스가 정상적으로 작동하고 있는지를 체크


* ENV

ENV [key] [value]

ENV [key]=[value]

- 환경변수 설정


* WORKDIR

WORKDIR [작업 디렉토리 경로]

- Dockerfile 안에 작성한 명령을 실행하기 위한 directory 설정 

   

* USER

USER [User 명 or UID]

- 명령을 실행하기 위한 사용자 지정


* LABEL

LABEL [key name]=[value]

- 이미지에 버전 정보, 작성자 정보, 코멘트 등의 정보제공


* EXPOSE

EXPOSE [포트 번호]

- 공개 포트 번호 지정


* ARG
ARG [이름]=[기본 값]
- Dockerfile 안에서 사용할 변수 정의

* SHELL
SHELL ["shell path", "parameter"]
- 쉘 형식으로 명령을 실행할 때, 기본 쉘을 설정

* ADD
ADD [Host 파일 경로] [Docker 이미지으 파일 경로]
ADD ["Host 파일 경로" "Docker 이미지으 파일 경로"]

* Dockerignore

[.dockerignore] 파일 안에 라인마다 빌드 시, 제외하고 싶은 파일 작성


* COPY

COPY [Host 파일 경로] [Docker 이미지의 파일 경로]

COPY ["Host 파일 경로" "Docker 이미지의 파일 경로"]


* VOLUME

VOLUME ["/Mount Point"]

- 지정한 이름의 Mount Point 생성


* Docker Compose

- 여러 Container를 모아서 관리하기 위한


* docker-compose.yml

- 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의


구분

내용

 version :

 버전 지정

 services :

 서비스 정의

 image :

 이미지 지정

 build :

 Dockerfile 위치 지정

 command :

 container 에서 작동하는 명령

 entrypoint :

 container 에서 작동하는 명령

 depends_on :

 서비스간 의존관계 설정

 environment :

 컨테이너 안 환경변수 설정

 container_name :

 컨테이너 이름 설정

 volumes :

 컨테이너에 볼륨 Mount

 volumes_from :

 다른 컨테이너로부터 모든 볼륨 마운트

 links :

 다른 컨테이너와 연결

 ports :

 Host 에 컨테이너가 공개하는 포트지정

 expose :

 컨테이너끼리 공개하는 포트 지정


* Docker 컨테이너 명령

- 생성 : docker-compose up [옵션] [서비스명]

- 확인 : docker-compose ps [옵션]

- 시작 : docker-compose start

- 정지 : docker-compose stop

- 재시작 : docker-compose restart

- 일시정지 : docker-compose pause

- 재개 : docker-compose unpause

- 정지 : docker-compose kill

- 삭제 : docker-compose rm

- 일괄 삭제 : docker-compose down [옵션]

- 명령 실행 : docker-compose run [컨테이너명] [명령]

- 서비스 구성 확인 : docker-compose port [옵션] [서비스명] [포트번호]


* Container 명령실행

- 생성 : docker-compose up [옵션] [서비스명]

- 확인 : docker-compose ps [옵션]

- 시작 : docker-compose start

- 정지 : docker-compose stop

- 재시작 : docker-compose restart

- 일시정지 : docker-compose pause

- 재개 : docker-compose unpause

- 정지 : docker-compose kill

- 삭제 : docker-compose rm

- 일괄 삭제 : docker-compose down [옵션]

+ Recent posts