Всем привет. Может кто сталкивался с проблемой.
Есть кластер k8s, внутри живет Jenkins который деплоит джобы через jnlp, В пайплайне финальная стадия билд имеджа с артифактами….
Выглядит это так….
- name: docker
image: customrepo/docker
command: ["cat"]
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
и
stage ('Stage six: Build Image’) {
steps {
container('docker'){
sh '$(aws ecr get-login --no-include-email --region us-east-1)'
sh """
cd /var/www/${
env.APP}
docker build -t ${
env.APP}:latest --build-arg BUILD_ID=$BUILD_ID .
docker tag ${
env.APP}:latest
0000000000.dkr.ecr.us-east-1.amazonaws.com/${env.APP}:latest docker push
0000000000.dkr.ecr.us-east-1.amazonaws.com/${env.APP}:latest """
}
}
}
И все с виду прекрасно….
Имедж билдится прекрасно…. НО если я хочу чтото доустановить на этом этапе в контейнер через Dockerfile, RUN apk add python3 К примеру.
Тоесть я произвожу операции резольва DNS то я получаю ошибки. Вот к примеру когда я тестировал резольв изнутри имеджа. [91mping:
mail.ru: Temporary failure in name resolution
22:42:54 [0mThe command '/bin/sh -c ping -c 3
mail.ru' returned a non-zero code: 2
Или к примеру в процессе билда я выполнил RUN cat /etc/resolf.conf с ответом nameserver
172.30.0.2 что говорит о том что контейнер незнает про Core-DNS.
Есть идея что проброс docker.sock недостаточен.
Также простейший пример этого по данной ссылке.
https://pushbuildtestdeploy.com/jenkins-on-kubernetes-building-docker-images/Повторюсь… что билдится все прекрасно если не обращаться к внешним ресурсам в процессе билда RUN pip3 install boto3 К примеру.