콘테이너 커스터마이징 및 생성하기
nginx를 customize 한 후 컨테너를 만들어서 쿠버네티스에서 pod로 생성하는 작업을 할 예정입니다.
1. 커스터마이징을 위한 Dockerfile 생성:
Dockerfile을 생성하여 NGINX 설정을 커스터마이징합니다.
FROM nginx:latest
# 컨테이너 내부에서 NGINX 설정 파일을 변경하거나 추가합니다.
# (예: /etc/nginx/nginx.conf, /etc/nginx/conf.d/)
COPY html /usr/share/nginx/html
COPY conf/default.conf /etc/nginx/conf.d/default.conf
VOLUME /usr/share/nginx/html
VOLUME /etc/nginx
# 커스터마이징된 NGINX 설정을 적용하기 위한 명령어를 추가합니다.
# (예: NGINX 재시작, 특정 설정 적용)
2. 커스터마이징된 이미지 빌드:
docker build -t my-custom-nginx . # 명령어를 사용하여 커스터마이징된 이미지를 빌드합니다. `.`는 현재 디렉토리를 의미하며, Dockerfile이 위치한 디렉토리입니다.
3. 생성된 Docker Images 관리
docker ps // 동작중인 컨테이너 확인
docker ps -a // 정지된 컨테이너 확인
docker stop [CONTAINER ID]
docker rm [CONTAINER ID] // 컨테이너 삭제, 이미지 삭제전 관련 컨테이너를 먼저 삭제하여야 한다.
docker images // 생성된 현재 이미지 보기
docker rmi [이미지 id] // 이미지 삭제
4. yaml 파일 생성
- my-custom-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: frontend1
labels:
app: nginx
spec:
containers:
- name: nginx
image: my-custom-nginx
imagePullPolicy: IfNotPresent // 로컬 docker로 부터 image 가져오기
ports:
- containerPort: 80
pod 생성
kubectl create -f my-custom-nginx.yaml
kubectl get pods // 생성된 pod 보기
4. 커스터마이징된 컨테이너 실행:
- kubectl 에서 실행
kubectl port-forward [컨테이너 이름] 8888:80
- docker 에서 실행
docker run -d -p 80:80 -p 443:443 --name [컨테이너 이름] [docker 이름] 명령어를 사용하여 컨테이너를 실행합니다.
docker run -d -p 80:80 -p 443:443 --name my-nginx-container my-custom-nginx 명령어를 사용하여 컨테이너를 실행합니다.
- -d: 컨테이너를 백그라운드에서 실행하는 옵션
- -p 80:80 -p 443:443는 호스트의 80번과 443번 포트를 컨테이너의 80번과 443번 포트에 매핑하는 옵션입니다.
- --name my-nginx-container는 컨테이너 이름을 설정하는 옵션입니다. my-custom-nginx는 빌드된 컨테이너 이미지 이름입니다.
5. NGINX 설정 확인 및 수정:
- kubectl 에서 실행
kubectl get pods // 먼저 접근할 pod를 확인한다.
kubectl exec --stdin --tty [pod name] -- /bin/bash
- docker 에서 실행
docker exec -it <컨테이너 ID> bash 명령어를 사용하여 컨테이너에 접속합니다.
vi /etc/nginx/nginx.conf 또는 vi /etc/nginx/conf.d/<설정 파일> 명령어를 사용하여 NGINX 설정 파일을 확인하고 수정합니다.
nginx -t 명령어를 사용하여 NGINX 설정을 검사합니다.
nginx -s reload 명령어를 사용하여 NGINX 설정을 재시작합니다.