94-104
docker run 컨테이너 바로 꺼짐
컨테이너는 운영체제 호스팅 하도록 되어 있지 않음
Dockerfile에 CMD가 있음 컨테이너 실행 후 실행되는 커맨드
bash 터미널 못 찾으면 종료
docker 터미널 연결하지 않음 -> 그래서 컨테이너가 바로 꺼짐
docker run ubuntu sleep 5 5초 기다렸다가 꺼짐 -> 영구적으로는?
CMD ["sleep", "5"] 명령과 변수는 따로따로
ENTRYPOINT 프로그램 시작 시 지정할 수 있음
ENTRYPOINT ["sleep"]
docker un ubuntu-sleeper 10
CMD와 결합 시, CMD ["5"]는 디폴트가 됨
--entrypoint 로 docker run 시 10으로 변경가능
파드 정의 파일에 커맨드를 명시하는 법
pod.spec.containers.args로 설정 -> CMD in Dockerfile
pod.spec.containers.command: ["sleep2.0"]가 ENTRYPOINT in Dockerfile
pod.spec.env를 통해 설정가능
바로 지정하는법
env:
- name: APP_COLOR
value: pink
cm이나 secrets로 지정하는 법
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
...
secretKeyRef:
ConfigMap
APP_COLOR: blue
APP_MODE: prod
생성하는 법
imperative
kubectl create cm \
app-config --from-literal=APP_COLOR=blue 값 추가시 여러번 지정
or
config-name -from=file=path-to-file
Declarative
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
APP_MODE: prod
용도에 따른 configma 생성 가능 및 이름을 적절히 지정해야함 -> 파드와 연결 해야 함으로
pod.spec.envFrom
spec:
envFrom:
- configMapRef:
name: configmap-name
ConfigMap 일반 텍스트 형식으로 저장 -> 암호 저장은 어울리지 않음
Secret 인코딩 하여 저장 함
1. 시크릿 생성
2. 파드에 마운트
Imperative
kubectl create secret generic \
app-config --from-literal=DB_HOSTY=mysql 값 추가시 여러번 지정
or
config-name -from=file=path-to-file
Declarative
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DB_HOST: mysql
DB_USER: root
DB_Passwrod: passwd -> 인코딩 형식으로 지정해야함
echo -n 을 하여 인코딩
echo -n 'paswrd' | base64
디코딩 하는법
echo -n 'dd' | base64 -d
pod.spec.envFrom
spec:
envFrom:
- secretRef:
name: configmap-name
volumes로 넣는 법
volumes:
- name: app-secret-volume
secret:
secretName: app-sercret
ls /opt/app-secret-volumes
cat /opt/app-secret-volume/DB_Password
컨테이너 안에서 실행 시 값 확인 가능