
Harbor는 ARM(arm64)에서 공식 이미지/공식 설치 흐름이 그대로 맞지 않는 구간이 있어서, ARM 환경에서는 에뮬레이터를 돌리거나 소스 기반으로 arm64 이미지를 직접 빌드하는 방식이 필요했다.
사실 누군가 이미 빌드하고 이미지를 제공하는 사람이 많을 줄 알았는데, 생각보다 정보가 너무 적어서 놀랐다. 그래도 일단 직접 빌드하기로 마음 먹었기 때문에 죽이되든 밥이되든 해봐야겠다고 생각했다.
먼저 소스 코드는 아래 레포지토리에서 다운 받았다.
소스코드 레포지터리
그러나 빌드 과정이 조금 쉽지 않았는데, 다시 한 번 복기하며 이해하고자 또 나와 같은 사람들이 이런 행위를 겪지 않았으면 해서 해당 포스팅을 작성하기로 마음 먹었다.
빌드 과정은 크게 세 파트로 나뉜다.
Harbor 이미지를 arm64로 빌드하려면 buildx가 arm64 플랫폼을 처리할 수 있어야 한다.
docker version
docker buildx version
docker buildx ls
dnf install -y \
git make gcc gcc-c++ \
tar gzip xz bzip2 \
curl jq patch rsync findutils \
openssl openssl-devel
아래는 이 도구들이 어떤 기능을 하는지 간단하게 정리해두었다.
레포지토리를 클론한 뒤 빌드 작업 디렉토리로 이동한다.
git clone https://github.com/goharbor/harbor-arm.git
cd harbor-arm
에러 메시지
Failed to parse docker-compose version.상황/원인 추정
내가 시도한 것
수정한 파일/코드
# /usr/local/bin/docker-compose 를 docker compose 래퍼로 교체
cat > /usr/local/bin/docker-compose <<'EOF'
#!/bin/sh
# Harbor Makefile이 기대하는 출력:
# docker-compose version X.Y.Z
# 를 만들어주고, 나머지는 docker compose로 위임한다.
if [ "$1" = "version" ] || [ "$1" = "--version" ]; then
v="$(docker compose version --short 2>/dev/null)"
if [ -z "$v" ]; then
v="$(docker compose version 2>/dev/null | awk '{print $NF}' | head -n 1)"
fi
v="${v#v}"
echo "docker-compose version $v"
exit 0
fi
exec docker compose "$@"
EOF
chmod +x /usr/local/bin/docker-compose
hash -r
# 확인
docker-compose version
--
에러 메시지
No space left on device상황/원인 추정
내가 시도한 것
수정/조치