Skip to main content

Docker 레지스트리 작업

GitHub Packages Docker 레지스트리를 사용하여 Docker 이미지를 푸시하고 끌어올 수 있습니다.

참고: 사이트 관리자가 지원되는 각 패키지 유형을 사용하거나 사용하지 않도록 설정할 수 있으므로 이 패키지 유형을 인스턴스에 사용할 수 없습니다. 자세한 내용은 "엔터프라이즈에 대한 패키지 에코시스템 지원 구성"을(를) 참조하세요.

Docker 지원 정보

Docker 이미지를 설치하거나 게시할 때 Docker 레지스트리는 현재 Windows 이미지와 같은 외부 레이어를 지원하지 않습니다.

Docker 엔진 v25는 GitHub Enterprise Server의 Docker 레지스트리와 호환되지 않습니다. 대신 Container registry을(를) 사용하는 것이 좋습니다. 마이그레이션에 대한 자세한 내용은 "Docker 레지스트리에서 컨테이너 레지스트리로 마이그레이션"을(를) 참조하세요.

GitHub Packages 인증

GitHub Packages은(는) personal access token (classic)을(를) 사용하는 인증만 지원합니다. 자세한 내용은 "개인용 액세스 토큰 관리"을(를) 참조하세요.

프라이빗, 내부, 퍼블릭 패키지를 게시, 설치, 삭제하려면 액세스 토큰이 필요합니다.

GitHub Packages 또는 GitHub Enterprise Server API에 인증하는 데 personal access token (classic)을 사용할 수 있습니다. personal access token (classic)을(를) 만들 때 필요에 따라 토큰의 범위를 다르게 할당할 수 있습니다. personal access token (classic)의 패키지 관련 범위에 대한 자세한 내용은 "GitHub 패키지에 대한 사용 권한 정보"을 참조하세요.

GitHub Actions 워크플로 내에서 GitHub Packages 레지스트리에 인증하려면 다음을 사용할 수 있습니다.

  • 워크플로 리포지토리와 연결된 패키지를 게시하려면 GITHUB_TOKEN을 사용합니다.
  • 다른 프라이빗 리포지토리(GITHUB_TOKEN는 액세스할 수 없음)와 연결된 패키지를 설치하기 위해 최소 read:packages 범위의 personal access token (classic).

GitHub Actions 워크플로에서 사용되는 GITHUB_TOKEN에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요.

personal access token을(를) 사용하여 인증

적절한 범위의personal access token (classic)으로 GitHub Packages에서 패키지를 게시하고 설치해야 합니다. 자세한 내용은 "GitHub 패키지 소개"을(를) 참조하세요.

docker 로그인 명령을 사용하여 Docker에서 GitHub Packages에 인증할 수 있습니다.

자격 증명을 안전하게 유지하려면 personal access token을(를) 컴퓨터의 로컬 파일에 저장하고 로컬 파일에서 토큰을 읽는 Docker의 --password-stdin 플래그를 사용하는 것이 좋습니다.

인스턴스에 하위 도메인 격리가 사용하도록 설정된 경우:

cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin

인스턴스에 하위 도메인 격리를 사용하지 않도록 설정한 경우:

cat ~/TOKEN.txt | docker login HOSTNAME -u USERNAME --password-stdin

이 로그인 명령 예제를 사용하려면 USERNAME을 GitHub Enterprise Server 사용자 이름으로, HOSTNAME을 GitHub Enterprise Server 인스턴스의 URL로, ~/TOKEN.txt을 GitHub Enterprise Server에 대한 personal access token의 파일 경로로 바꿉니다.

자세한 내용은 “Docker 로그인”을 참조하세요.

이미지 게시

참고: GitHub Packages Docker 레지스트리 는 개선된 컨테이너 지원을 제공하는 Container registry로 향후 GitHub Enterprise Server 릴리스에서 대체될 예정입니다.

참고: 이미지 이름은 소문자만 사용해야 합니다.

GitHub Packages는 리포지토리당 여러 개의 최상위 Docker 이미지를 지원합니다. 리포지토리에는 여러 이미지 태그가 있을 수 있습니다. 10GB보다 큰 Docker 이미지를 게시하거나 설치하는 서비스 성능이 저하될 수 있으며 각 레이어는 5GB로 제한됩니다. 자세한 내용은 Docker 설명서의 “Docker 태그”를 참조하세요.

패키지를 게시한 후 GitHub에서 패키지를 볼 수 있습니다. 자세한 내용은 "패키지 보기"을(를) 참조하세요.

  1. docker images를 사용하여 Docker 이미지의 이미지 이름 및 ID를 확인합니다.

    $ docker images
    > <&nbsp>
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
    
  2. Docker 이미지 ID를 사용하여 Docker 이미지에 태그를 지정하여 OWNER를 리포지토리를 소유하는 개인 계정 또는 조직의 이름으로, REPOSITORY를 프로젝트를 포함하는 리포지토리의 이름으로, IMAGE_NAME을 패키지 또는 이미지의 이름으로, HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로, VERSION을 빌드 시 패키지 버전으로 바꿉니다.

인스턴스에 하위 도메인 격리가 사용하도록 설정된 경우:

docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
인스턴스에 하위 도메인 격리가 사용되지 않은 경우:
docker tag IMAGE_ID HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  1. 패키지에 대한 Docker 이미지를 아직 빌드하지 않은 경우 이미지를 빌드하여 OWNER를 리포지토리를 소유하는 개인 계정 또는 조직의 이름으로, REPOSITORY를 프로젝트가 포함된 리포지토리의 이름으로, IMAGE_NAME을 패키지 또는 이미지의 이름으로, VERSION을 빌드 시 패키지 버전으로, HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로 바꾸고 현재 작업 디렉터리에 경로가 없는 경우 이미지에 대한 PATH를 입력합니다.

인스턴스에 하위 도메인 격리가 사용하도록 설정된 경우:

docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
인스턴스에 하위 도메인 격리가 사용되지 않은 경우:
docker build -t HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
  1. GitHub Packages에 이미지를 게시합니다.

인스턴스에 하위 도메인 격리가 사용하도록 설정된 경우:

docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
인스턴스에 하위 도메인 격리가 사용되지 않은 경우:
docker push HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
 <div class="ghd-alert ghd-alert-accent ghd-spotlight-accent">

참고: IMAGE_NAME:SHA를 사용하지 않고 IMAGE_NAME:VERSION을 사용하여 이미지를 푸시해야 합니다.

Docker 이미지 게시 예제

아래 예제에서는 인스턴스가 하위 도메인 격리를 사용하도록 설정되어 있다고 가정합니다.

이미지 ID를 사용하여 monalisa 이미지의 버전 1.0을 octocat/octo-app 리포지토리에 게시할 수 있습니다.

$ docker images

> REPOSITORY           TAG      IMAGE ID      CREATED      SIZE
> monalisa             1.0      c75bebcdd211  4 weeks ago  1.11MB

# Tag the image with OWNER/REPO/IMAGE_NAME
$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

새 Docker 이미지를 처음으로 게시하고 이름을 monalisa로 지정할 수 있습니다.

# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
# Assumes Dockerfile resides in the current working directory (.)
$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 .

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

이미지 다운로드

참고: GitHub Packages Docker 레지스트리 는 개선된 컨테이너 지원을 제공하는 Container registry로 향후 GitHub Enterprise Server 릴리스에서 대체될 예정입니다.

docker pull 명령을 사용하여 GitHub Packages에서 docker 이미지를 설치하고 OWNER를 리포지토리를 소유한 개인 계정 또는 조직의 이름으로, REPOSITORY를 프로젝트가 포함된 리포지토리의 이름으로, IMAGE_NAME을 패키지 또는 이미지의 이름으로, HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로, TAG_NAME을 설치하려는 이미지에 대한 태그로 바꿉니다.

인스턴스에 하위 도메인 격리가 사용된 경우:

docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

인스턴스에 하위 도메인 격리가 사용되지 않은 경우:

docker pull HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

참고: IMAGE_NAME:SHA를 사용하지 않고 IMAGE_NAME:VERSION을 사용하여 이미지를 풀(pull)해야 합니다.

추가 참고 자료