Kaniko를 사용하여 컨테이너 이미지 빌드

4936 단어 dockerkaniko
컨테이너화는 배포를 위해 애플리케이션을 패키징하고 격리할 수 있는 가장 널리 사용되는 기술입니다. CI/CD 파이프라인에서는 애플리케이션을 컨테이너화하고 나중에 사용하기 위해 컨테이너 레지스트리에 푸시하는 것이 일반적입니다.

CI/CD 서비스가 컨테이너로 실행되는 경우 해당 서비스에서 컨테이너 이미지를 빌드하는 방법은 무엇입니까? Docker의 Docker는 호스트에 근본적인 보안 위험을 생성하는 간단하지만 위험한 접근 방식입니다.

kaniko - 호스트의 Docker 소켓 없이 컨테이너 이미지를 빌드하는 솔루션 중 하나입니다.

다음 예제는 Docker에서 컨테이너 이미지를 빌드하는 방법을 보여줍니다.

도커 예제



컨테이너 이미지 빌드 및 컨테이너 레지스트리로 푸시



전제 조건:
  • push 권한이 있는 컨테이너 레지스트리입니다.
  • 도커

  • 이 예제 스크립트는 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}"
    


    쿠버네티스 예시



    미정

    좋은 웹페이지 즐겨찾기