"15단계로 배우는 도커와 쿠버네티스"를 참조하여 작성하였습니다.
<컨테이너 API>
컨테이너 API의 종류와 개요
- 컨테이너 API
- 컨테이너를 블랙박스처럼 다룰 수 있게 해주는 인터페이스
- 컨테이너 내부의 프로그램에 대해 잘 알지 못해도 간단하게 재이용이 가능
- 컨테이너 API의 종류
- 컨테이너 기동
- 기동 시 환경 변수나 실행 인자를 읽고 그에 맞게 동작하도록 만듦->환경 변수는 docker hub홈페이지에 들어가면 나와있음.
-컨테이너 종료
- 종료 요청 시그널에 대한 종료처리 구현
-퍼시스턴트 볼륨->영구적으로 저장한다는 의미
-설정파일을 외부에서 주입하거나 발생 테이터를 보존하기 위해 사용
-컨테이너는 일시적인 존재이기 때문에 보관이 필요한 데이터를 컨테이너의 파일 시스템에 저장해서는 안됨
- 인증서와 같이 보안에 민감한 파일을 이미지에 포함시켜 리포지토리에 등록해서는 안됨
- 헬스 체크 (쿠버네티스 환경)
- 준비 완료 프로브
- 활성 프로브
- 서비스
- 컨테이너 위에서 돌아가는 서버 애플리케이션은 특정 포트를 통해 클라이언트의 요청을 받아들임
- 특정 포트번호로 클라이언트로부터의 요청을 받고, 처리 결과를 반환하는 역할을 수행
- 로그
- 도커나 쿠버네티스에서는 컨테이너의 표준 출력(STDOUT)과 표준 오류(STDERR)을 로그로 보관
- 후크 ( 쿠버네티스 환경 )
- 컨테이너가 기동하고 종료할 때 컨테이너 내에서 특정 처리를 진행시킬 수 있음
- 컨테이너에 후크에 의해 실행될 스크립트, 혹은 HTTP 요청 처리를 구현해야 함
- 종료 상태
- 컨테이너가 종료 코드 0으로 종료하면 정상 종료로 취급
- 그 외의 값인 경우에는 비정상 종료로 취급
퍼시스턴트 볼륨 API 구현 실습
- 컨테이너를 지워도 데이터를 보존
1)디렉토리 준비 및 이미지 포함 파일 모음
$ cd step05
$ mkdir data
2) Dockerfile 작성
Dockerfile3파일
FROM alpine:latest
RUN apk update && apk add bash
ADD ./my_daemon3 ?my_daemon
CMD ["/bin/bash", "/my_daemon"]
3) 애플리케이션 준비
-my_daemon3 쉘 스크립트
##카운터 초기화
COUNT=0
##퍼시스턴트 볼륨상의 저장 파일 경로
PV=/pv/save.dat
##환경 변수가 없으면 설정
if [-z "$INTERVAL" ]; then
INTERVAL=3
if
##기동 시 상태 취득 <--퍼시스턴트 볼륨의 파일에서 상태 취득
if [ -f $PV ]; then
COUNT='CAT $PV'
rm -f $PV
fi
##SIGTERM 처리 <--퍼시스턴트 볼륨의 파이에 상태 저장
save(){
echo $OUNT > $PV
exit
}
trap save TERM
##메인 루프
while [ true ];
do
TM=`date|awk '{print $4}'`
printf "%s : %s \n" $TM $COUNT
4) 이미지 빌드
$ docker image build -t my_daemon:0.3 -f Dockerfile3 .
: my_daemon:0.3의 Dockerfile3을 현재경로(.)에서 빌드
5) 컨테이너를 실행하고 동작을 확인
$ docker container run --name myd -e INTERVAL=1 `pwd`/data:/pv my_daemon:0.3
*주의할 점 `pwd`에서 `는 역따옴표이다.
->다시 시작해도 count가 이어서 증가한다.
->myd를 지워도 다시 실행하면 count가 지워지지 않는 것을 확인할 수 있다.
'Programmer > Cloud' 카테고리의 다른 글
[Docker] 7.쿠버네티스 클러스터 구축 (0) | 2021.08.24 |
---|---|
[Docker] 6.컨테이너 오케스트레이션과 쿠버네티스 (0) | 2021.08.24 |
[Docker] 4 도커 활용과 컨테이너 (0) | 2021.08.13 |
[Docker] 3 도커 환경 구축 & 명령어 (0) | 2021.08.12 |
[Docker] 2 도커란? (0) | 2021.08.12 |