-1

이미지에 의존성을 추가해야합니다. 따라서 컨테이너에서 실행 중이고 새 이미지를 만들 때 이미지를 변경하려고했습니다. 난 후 다음 명령을 this article에 따라 있습니다컨테이너의 변경 사항으로 Google Cloud Container에서 새 이미지 만들기

kubectl run my-app --image=gcr.io/my-project-id/my-app-image:v1 --port 8080 
kubectl get pods 
kubectl exec -it my-app-container-id -- /bin/bash 

다음 용기의 쉘에, 내가 "NAME_OF_Dependncy를 설치 PIP"를 사용하여 종속성을 설치했습니다. 는 그럼 난 용기의 쉘에서 종료하고 그것이 문서에 설명 된 바와 같이,이 명령을 사용하여 변경 사항을 커밋해야합니다

sudo docker commit CONTAINER_ID nginx-template 

을하지만 와 구글는 Kubernetes 엔진에 해당하는 명령을 찾을 수 없습니다 kubectl

Google 컨테이너 엔진에서 커밋을 어떻게해야합니까?

답변

2

K8s 버전 1.8과 동일. 핫 픽스 (Hot Fix) 변경 사항을 이미지에 직접 적용 할 수있는 방법은 없습니다. 예를 들어, 실행중인 컨테이너에서 새 이미지 커밋하기. exec을 사용하여 여전히 항목을 변경하거나 추가하는 경우 컨테이너가 실행될 때까지 그대로 유지됩니다. 은 K8S 에코 시스템의 모범 사례이 아닙니다.

권장 방법은 해당 레지스트리에 이미지 (공개/개인) 및 K8S로 배포 매니페스트 파일을 밀어 수 있다는 필요성과 requirements.After에 따라 Dockerfile를 사용하여 이미지를 사용자 정의 할 수 있습니다. 문제

  • 솔루션은 이미지에 대한 Dockerfile을 만듭니다.

  • Dockerfile을 사용하여 이미지를 빌드하십시오.
  • 이미지를 레지스트리로 이동하십시오.
  • 배포 매니페스트 파일과 서비스 매니페스트 파일을 작성하십시오.
  • 매니페스트 파일을 k8s 클러스터에 적용합니다.

이제 뭔가를 변경/수정하려면 Dockerfile을 변경/수정하고 나머지 단계를 수행하면됩니다.

컨테이너는 동작이 변경되지 않는 짧은 생물입니다 (구성이 변경되고 파일 시스템이 변경됨). 따라서 Dockerfile에서 새로운 동작이나 수정을하는 것이 좋습니다.

는 Kubernetes 만트라
는 Kubernetes는 Google 클라우드, AWS 또는 푸른 사용 여부는 중요하지 않습니다 의미 클라우드 기본 제품입니다. 각 클라우드 제공자에 대해 일관된 동작이 있어야합니다.

+0

나는 docker가 새롭다. 당신의 솔루션을 Dockerfile과 함께 사용하여 말해 줄 수 있는가, 기존 이미지를 갖는 새로운 이미지를 만들 수 있는가? 나는 단지 의존성을 추가해야한다. 그래서 가장 직접적인 방법은 무엇인가? – Majico

+0

투명도, 사용자 정의, 버전 제어 등으로 인해 각 이미지가 Dockerfile을 사용하여 생성됩니다. 기존 Dockerfile이있는 경우 종속성을 추가하기 만하면됩니다.예를 들어, 'RUN pip install NAME_OF_Dependncy'는 Dockerfile의 다른 줄입니다. Dockerfile에 Dockerfile을 작성하는 방법과 각 줄의 기능을 추가로 읽어 보시기 바랍니다. 그것은 당신에게 포괄적 인 아이디어를 줄 것입니다. 니가 더 의심한다면 나에게 알려줘. 나는 너에게 방향을 제시하기 위해 최선을 다할 것이다. –

+0

기존 DockerFile이 없습니다. DockerHub에서 가져 왔습니다. DockeFile을 작성하는 방법을 배우 겠지만 DockerFile을 사용하지 않고 기존 이미지를 사용하여 새 이미지를 만드는 것이 가능한지 알려주시겠습니까? – Majico