2023. 2. 28. 00:50ㆍTools/Docker
0. 참고자료
출처 : https://youtu.be/cqlY1Hc70H0
1. Github와 Docker의 만남
왜 만남?
기본적으로 생성한 이미지를 dockerhub에 업로드할 수 있다.
하지만 dockerhub에서는 무료 비공개 업로드는 하나밖에 안 된다.
그래서 다수의 비공개 업로드를 위해서 Github를 활용할 필요가 있다.
2. Container Registry
Github의 Packages에서는 Container Registry라는 기능을 제공한다.
(Docker는 현재 Container Registry로 대체되었다.)
무료로 제한 없이 비공개 저장소를 이용할 수 있다.
가. 인증하기
Github에 접근할 수 있는 권한을 가지고 있을 인증하기 위해서 Personal access tokens을 발급받아야 한다.
- Setting → Developer settings → Personal access tokens → Token → Generate new token
Note
: 토큰의 용도를 기입한다.Expiration
: 유효기간을 설정한다.Select scopes
: 토큰으로 수행할 수 있는 작업들을 선택한다.
Container Registry로 활용하기 위해서는 위와 같은 수준의 권한이 필요하다.
생성된 토큰 값은 이후로 다시 볼 수 없으니 안전한 곳에 따로 저장해 두자.
export CR_PAT=토큰값
위의 코드를 사용하는 shell의 설정파일에 추가하자.
환경변수를 추가하는 것이다.
나는 zsh을 사용하기 때문에 .zshrc
에 넣었다.
shell을 재부팅한다. source .zshrc
도 괜찮다.
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
ghcr.io
: Github Container registry service로 로그인하기.-u
: github id--password-stdin
: github password로echo $CR_PAT
를 입력(standard input)받겠다.
토큰을 이용해서 로컬에서 로그인한다.
3. 이미지 Push하기
이미 my_con 이라는 컨테이너가 있다고 가정한다.
해당 컨테이너를 이미지로 만들고 Registry에 push하고 싶은 경우 아래의 절차대로 수행한다.
가. commit
docker commit my_con ghcr.io/NAMESPACE/이미지이름:버전
NAMESPACE
: the name of the personal account or organization to which you want the image to be scoped.
이미지를 만들었다.
이제 Github Container registry service에 저장하고자 한다.
docker push ghcr.io/NAMESPACE/이미지이름:버전
이렇게 이미지가 push된 것을 볼 수 있다.
4. Github Packages
Packages를 클릭하면 pull할 수 있는 명령어가 보인다.
또한 이미지를 버전별로 관리되는 것을 볼 수 있다.
각 버전별로 따로 pull할 수 있고 또한 Dockerfile에서 base image로 활용할 수 있다.
가. Package settings
Package settings에서는 멤버를 추가 및 삭제할 수 있다.
여기서 package의 공개, 비공개 설정 그리고 삭제를 수행할 수 있다.
나. 저장소와 연결하기
버튼을 눌러서 연결하면 저장소의 우측 하단에 같이 추가된 것을 볼 수 있다.
저장소에 연결하면 packages setting이 이렇게 변화한다.
- inherit access from source repository (recommended)
: 체크하면 연결된 저장소로 해당 package에 대한 권한을 부여한다.
: 저장소의 멤버마다 package에 대한 권한을 다르게 부여하고 싶다면 저장소의 access settings에서 설정할 수 있다.
Package setttings에서 저장소와의 연결을 끊을 수 있다.
'Tools > Docker' 카테고리의 다른 글
[Docker] MySQL 설치 (0) | 2023.03.10 |
---|---|
[Docker] Multi-architecture build (0) | 2023.03.07 |
[Docker] 연습하기 (2) | 2023.02.27 |
[Docker] Compose (0) | 2023.02.27 |
[Docker] 가상화된 Docker host에 접근하기 (0) | 2023.02.27 |