У меня есть следующий Dockerfile:
FROM ubuntu:bionic as builder
ARG DIGITALOCEAN_ACCESS_TOKEN
ARG K8S_CLUSTER
ARG ARGO_SERVER
ARG ARGO_USERNAME
ARG ARGO_PW
RUN apt-get update
RUN apt-get install -y curl
WORKDIR /app
RUN curl -L https://github.com/digitalocean/doctl/releases/download/v1.41.0/doctl-1.41.0-linux-amd64.tar.gz | tar xz
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
RUN curl -L https://github.com/argoproj/argo-cd/releases/download/v1.4.3/argocd-linux-amd64 -o argocd
RUN chmod +x ./argocd
RUN chmod +x ./kubectl
RUN mv ./argocd /usr/local/bin/
RUN mv ./kubectl /usr/local/bin/
RUN mv ./doctl /usr/local/bin/
CMD doctl auth init -t ${DIGITALOCEAN_ACCESS_TOKEN}; \
doctl kubernetes cluster kubeconfig save ${K8S_CLUSTER}; \
kubectl get svc; \
argocd login ${ARGO_SERVER} --username ${ARGO_USERNAME} --password ${ARGO_PW} --grpc-web; \
argocd context; \
argocd repo list;
Обычно вторая строка команд CMD:
doctl kubernetes cluster kubeconfig save ${K8S_CLUSTER};
создает .kube
папку для подключения K8S.
Когда я создаю контейнер из сгенерированного изображения выше с помощью:
docker run --rm -it \
--env=DIGITALOCEAN_ACCESS_TOKEN=ba86e1d38aff13edfed32 \
--env=K8S_CLUSTER=k8s \
--env=ARGO_SERVER=argocd \
--env=ARGO_USERNAME=user \
--env=ARGO_PW=password \
--name argocd \
argo-cli
, и он показывает в выводе:
Notice: Adding cluster credentials to kubeconfig file found in "/root/.kube/config"
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-kubernetes-first ClusterIP 10.245.232.52 <none> 80/TCP 2d
kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 2d1h
playbox ClusterIP None <none> 42/TCP 24h
'deployer' logged in successfully
Context 'argocd' updated
Но при запуске контейнера с bash:
docker run --rm -it \
--env=DIGITALOCEAN_ACCESS_TOKEN=ba86e1d38aff13edfed32 \
--env=K8S_CLUSTER=k8s \
--env=ARGO_SERVER=argocd \
--env=ARGO_USERNAME=user \
--env=ARGO_PW=password \
--name argocd \
argo-cli bash
и, заглянув внутрь контейнера, папка .kube
вообще не создается:
root@8e64d93ad3ba:~# ls -a
. .. .bashrc .profile
Почему?