I am trying to build a multiarch image on GitLab CI with buildx and when I tried to run docker inside my pod I receive this error:
Failed to initialize: unable to resolve docker endpoint: context "/builds/infrastructure/apps/deployer": context not found: open /root/.docker/contexts/meta/726f8c8b439712b59d12acacc425f6720c7c4fd123a6503aa6a022b79cd18827/meta.json: no such file or directory
gitlab-ci.yml
build:
image:
name: ubuntu:latest
entrypoint: [""]
variables:
ECR_REGISTRY: <path to ECR>
DOCKER_CONTEXT: $CI_PROJECT_DIR/apps/deployer
script:
- apt-get update -y
- apt-get upgrade -y
- apt-get install ca-certificates curl gnupg lsb-release -y
- mkdir -m 0755 -p /etc/apt/keyrings
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
- apt-get update -y
- apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
- dockerd --log-level=error & echo "Waiting dockerd start..." && until docker ps; do sleep 1; done
- docker buildx create \
--bootstrap \
--name=test-multiarch-deployer \
--driver=kubernetes \
--platform=linux/amd64 \
--node=builder-amd64 \
'--driver-opt=namespace=test,requests.cpu=1,requests.memory=1Gi,"nodeselector=amd64=true","tolerations=key=dedicated,value=test_amd64,effect=NoSchedule",rootless=true,qemu.install=false'
- docker buildx create \
--append \
--bootstrap \
--name=test-multiarch-deployer \
--driver=kubernetes \
--platform=linux/arm64 \
--node=builder-arm64 \
'--driver-opt=namespace=test,requests.cpu=1,requests.memory=1Gi,"nodeselector=arm64=true","tolerations=key=dedicated,value=test_arm64,effect=NoSchedule",rootless=true,qemu.install=false'
- docker buildx ls
- docker buildx build \
--builder=test-multiarch-deployer \
--platform=linux/amd64,linux/arm64 \
--file $DOCKER_CONTEXT/Dockerfile \
--tag $ECR_REGISTRY:$CI_COMMIT_SHA \
--push $DOCKER_CONTEXT
I tried autenticate on my ECR and receive a error similar:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin id.dkr.ecr.region.amazonaws.com
Failed to initialize: unable to resolve docker endpoint: context "/builds/infrastructure/apps/deployer": context not found: open /root/.docker/contexts/meta/726f8c8b439712b59d12acacc425f6720c7c4fd123a6503aa6a022b79cd18827/meta.json: no such file or directory
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
BrokenPipeError: [Errno 32] Broken pipe
root@runner-cxcqt1ch-project-18134363-concurrent-09ljdh:/# exit
exit
command terminated with exit code 1