* 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 [포트 번호]
- 공개 포트 번호 지정
[.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 [옵션]
'SW > IT 인프라' 카테고리의 다른 글
[Docker] Docker 실행환경 구축 (0) | 2020.02.09 |
---|---|
[Docker] Docker 컨테이너 생성/시작/정지/네트워크/조작/이미지 생성 (0) | 2020.01.19 |
[Docker] Docker 이미지 조작 (0) | 2020.01.19 |
[Docker] 시스템과 인프라 기초 지식 (0) | 2020.01.19 |
/////Immutable Infrastructure (0) | 2020.01.19 |