Создание образа контейнера с помощью Kaniko

Контейнеризация — это самая популярная технология, которая позволяет упаковывать и изолировать приложения для развертывания. В конвейерах CI/CD принято контейнеризировать приложение и отправлять его в реестр контейнеров, а затем использовать.

Если сервисы CI/CD работают как контейнеры, как создать образ контейнера на этих сервисах? Docker в Docker — простой, но опасный подход, который создает базовые риски безопасности для хоста.

kaniko — это одно из решений, которые строят образы контейнеров, не требуя Docker-сокета хоста.

Следующие примеры демонстрируют, как построить образ контейнера в Docker.

Примеры Docker

Сборка и отправка образа контейнера в реестр контейнеров

Необходимые условия:

  • Реестр контейнеров с разрешением push.
  • Docker

Этот пример скрипта создает минимальный образ контейнера в Docker и проталкивает его в реестр контейнеров.

Перед запуском скрипта отредактируйте переменные в соответствии с вашими потребностями.

#!/usr/bin/env bash

REGISTRY_IP="127.0.0.1"
REGISTRY_DOMAIN="reg.myharbor.io"
REGISTRY_USER="admin"
REGISTRY_PSWD="Harbor12345"

# add registry's credential into config.json
cat > config.json << EOF
{"auths": {"${REGISTRY_DOMAIN}": {"auth": "$(echo -n ${REGISTRY_USER}:${REGISTRY_PSWD} | base64)"}}}
EOF

# create Dockerfile
cat > Dockerfile << EOF
FROM docker.io/library/alpine:latest
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
EOF

# configure the kaniko arguments
KANIKO_WORKSPACE="/workspace"
IMAGE_TAG=$(date "+%m-%d-%H-%M-%S")
DESTINATION="${REGISTRY_DOMAIN}/library/demo:${IMAGE_TAG}"
KANIKO_TAG="v1.8.0"
KANIKO_CMD="--dockerfile=${KANIKO_WORKSPACE}/Dockerfile --context=dir://${KANIKO_WORKSPACE} --destination=${DESTINATION} --skip-tls-verify --skip-tls-verify-pull --verbosity=debug"

# Run the kaniko container to perform `docker build` in Docker.
docker run --rm -it 
-v "${PWD}":${KANIKO_WORKSPACE} 
-v "${PWD}"/config.json:/kaniko/.docker/config.json 
--workdir ${KANIKO_WORKSPACE} 
--add-host ${REGISTRY_DOMAIN}:${REGISTRY_IP} 
gcr.io/kaniko-project/executor:${KANIKO_TAG} "${KANIKO_CMD}"
Вход в полноэкранный режим Выход из полноэкранного режима

Примеры Kubernetes

TBD

Оцените статью
devanswers.ru
Добавить комментарий