Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AI
- go
- 프로세스 관리
- jenkins
- 리눅스
- terraform
- AI챗봇
- AWS
- git hub
- open ai
- Azure
- it기사
- 3티어 아키텍처
- docker
- maven
- 사용자 계정 관리
- 명령어
- GIT
- python
- 애저
- aws사용자모임
- 표준 라이브러리
- dockerfile
- 클라우드
- 변수
- 파이썬
- 함수
- awskrug
- nexus
- Linux
Archives
- Today
- Total
We are Architect
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 API(10) 본문
* 컨테이너 API 이란?
- 컨테이너 API는 컨테이너를 블랙박스처럼 다룰 수 있게 해주는 인터페이스이다.
- 먼저 API는 애플리케이션 인터페이스라고 하며. 인터페이스는 본래 케이프이나 하드웨어 규격을 의미한다.
- 이렇듯 API는 애플리케이션들을 연결하기 위해서 지켜줘야 할 규격이라고 생각하면 된다.
* 컨테이너 API의 종류와 개요.
- 애플리케이션의 특성에 맞게 API를 선택하여 구현해야 한다.
- 컨테이너 API 목록
- 컨테이너 기동 : 컨테이너 내의 애플리케이션은 기동 시에 환경 변수나 실행 인자를 읽어서 그에 맞게 동작하게 만들 수 있다.
- 헬스 체크 : 컨테이너의 애플리케이션이 초기화가 완료되어 외부로부터의 요청을 받을 수 있게 되었음을 알리는 인터페이스이다.
- 컨테이너 종료 : 컨테이너 내의 애플리케이션은 종료 요청 시그널에 대한 종료 처리를 구현하는 것이 좋다.
- 기타 지원(메모리 요구량, CPU 요구량, 접속 네트워크) :
- 가동 로그 : 마이크로서비스 아키텍처를 사용하고 규모가 커지게 되면 보통 많은 수의 컨테이너를 돌리게 된다. 컨테이너의 표준 출력과 출력 오류를 로그로 간직한다.
- 종료 상태 : PID가 1인 프로세스의 EXIT 코드가 컨테이너의 종료 코드로 설정된다. 컨테이너상의 애플리케이션은 적절하게 종료 코드를 반환하도록 구현해야 한다.
- 퍼시스턴트 볼륨 : 컨테이너는 알사적인 존재이기 때문에 보관이 필요한 데이터를 파일 시스템에 저장해서는 안 된다.
- 훅 : 훅은 컨테이너 실행 전후에 동작하는 코드나 스크립트를 말하며, 컨테이너의 상태 변경 이벤트에 대한 특정 작업을 정의할 수 있다.
- 서비스 : 컨테이너가 제공하는 서비스를 정의하고 관리할 때는 클라이언트와의 연결과 서비스 지속성이 중요.
- 컨테이너 기동 : 컨테이너가 시작할 때 애플리케이션이 제대로 기동 되고, 외부 의존성을 확인하는 것이 중요.
* 종료 요청 API 구현 예
- 시그널은 유닉스 계열의 운영체제에서 프로세스에게 이벤트를 비동기적으로 전달하기 위해 존재한다.
- 커널로부터 시그널을 받은 프로세스는 인터럽트 된다. 미리 시그널 처리 루틴을 등록해 두면 시그널을 받았을 때 필요한 처리를 수행할 수 있다.
- 예제코드 (dockerfile)
FROM alpine:latest # bash 설치 RUN apk update && apk add bash # my_daemon 추가 및 실행 권한 부여 ADD ./my_daemon /my_daemon RUN dos2unix /my_daemon && chmod +x /my_daemon # 실행 CMD ["/bin/bash", "/my_daemon"]
- 예제코드 (my_daemon)
#!/bin/bash # 카운터 초기화 COUNT=0 # 환경 변수가 없으면 설정 if [ -z "$INTERVAL" ]; then INTERVAL=3 fi # 기동 시 상태 획득 <-- 추가 처리 #1 if [ -f save.dat ]; then COUNT='cat.save.dat' rm -f save.dat fi # SIGTERM 수신 시 처리 save() { echo $COUNT > save.dat exit 0 } trap save TERM # 메인 루프 while [ true ]; do TM=$(date | awk '{print $4}') printf "%s : %s \n" $TM $COUNT let COUNT=COUNT+1 sleep $INTERVAL done
- 실행 결과
'Docker' 카테고리의 다른 글
Docker 이미지 용량 제한하기 (1) | 2024.12.31 |
---|---|
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 네트워크(9) (1) | 2024.12.31 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 개발-2(8) (2) | 2024.12.31 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 개발-1(7) (1) | 2024.12.30 |
15단계로 배우는 Docker와 쿠버네티스: 컨테이너 다루기(6) (1) | 2024.12.30 |