#docker #kubernetes #dockerfile
#docker #kubernetes #dockerfile
Вопрос:
Допустим, у меня есть развертывание, которое выглядит примерно так:
apiVersion: v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
template:
kind: Pod
metadata: myapp-pod
labels:
apptype: front-end
containers:
- name: nginx
containers: <--what is supposed to go here?-->
Как мне правильно создать контейнер, используя существующий Dockerfile, без необходимости загружать образ сборки в Docker hub?
Ответ №1:
Kubernetes не может создавать образы. Вам практически необходимо использовать реестр образов. Это не обязательно Docker Hub: у различных поставщиков общедоступных облачных сервисов (AWS, Google, Azure) есть свои собственные предложения реестра, есть некоторые сторонние, или вы можете запустить свой собственный.
Если вы используете облачную установку Kubernetes (EKS, GKE, …), «правильный» способ сделать это — поместить созданный образ в соответствующий реестр образов (ECR, GCR, …) перед его запуском.
docker build -t gcr.io/my/image:20201116 .
docker push gcr.io/my/image:20201116
containers:
- name: anything
image: gcr.io/my/image:20201116
В очень локальной среде разработки существуют некоторые ограниченные исключения из этого правила. Например, если вы используете Minikube в качестве локальной установки Kubernetes, вы можете указывать docker
на него команды, чтобы docker build
создать образ внутри контекста Kubernetes.
eval $(minikube docker-env)
docker build -t my-image:20201116 .
containers:
- name: anything
image: my-image:20201116 # matches `docker build -t` option
imagePullPolicy: Never # since you manually built it inside the minikube Docker
Ответ №2:
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment посмотри на это.
Убедитесь, что вы внимательно прочитали документацию 🙂