최근 Docker 이미지 빌드 작업 중 다음과 같은 명령어를 실행했습니다:
docker buildx build -t test/echo .
빌드 프로세스는 시작되었지만, 레지스트리 인증 관련 401 오류가 발생했습니다. 이러한 Docker에서의 401 오류는 권한 없음(Unauthorized) 상태를 나타내며, Docker Hub나 다른 컨테이너 레지스트리에 인증되지 않은 상태에서 이미지를 가져오거나 푸시하려고 할 때 발생합니다.
로그를 자세히 살펴보면 다음과 같은 단계에서 문제가 발생할 수 있습니다:
=> [auth] library/golang:pull token for registry-1.docker.io
=> [1/3] FROM docker.io/library/golang:1.24.1@sha256:52ff1b35ff8de185bf9f...
이 문제는 간단히 docker login 명령어로 해결했습니다. 이 명령어를 사용하면 Docker Hub 또는 다른 레지스트리에 인증할 수 있으며, 이후 이미지 pull/push 작업을 원활하게 수행할 수 있습니다.
docker login
이 명령어를 실행하면 사용자 이름과 비밀번호를 입력하라는 프롬프트가 표시됩니다.
특정 레지스트리 로그인
docker login [레지스트리 URL]
예: docker login registry.example.com
사용자 이름과 비밀번호 직접 지정
docker login -u [사용자이름] -p [비밀번호]
보안 주의: 명령줄에 직접 비밀번호를 입력하는 것은 권장되지 않습니다. 시스템 히스토리에 비밀번호가 저장될 수 있습니다.
비밀번호 파일 사용
cat password.txt | docker login --username [사용자이름] --password-stdin
이 방법은 비밀번호를 명령줄 히스토리에 노출시키지 않아 더 안전합니다.
비밀번호 없이 로그인 (비밀번호 프롬프트만 표시)
docker login --username [사용자이름]
특정 인증 서버 사용
docker login --auth-server [인증 서버 URL]
로그인 정보 확인
로그인 상태 및 구성 확인
cat ~/.docker/config.json
로그아웃
docker logout [레지스트리 URL]
CI/CD 파이프라인과 같은 자동화 환경에서는 보안 자격 증명 관리에 주의해야 합니다
Docker 401 인증 오류는 일반적으로 발생하는 문제이지만, docker login 명령어를 통해 쉽게 해결할 수 있습니다. 올바른 인증 정보를 사용하여 로그인하면 이미지 pull/push 작업이 원활하게 진행됩니다. 특히 CI/CD 환경이나 공유 시스템에서 작업할 때는 비밀번호 관리에 주의하고 보안 모범 사례를 따르는 것이 중요합니다.