이번 포스팅에서는 Github에 있는 Private Repo 를 가지고,
도커 이미지를 빌드하는 방법에 대해 다뤄보도록 하겠습니다.
자격증명이 따로 필요한 이유
private 가 아닌 public 이었을 때는, 레포지토리를 git clone 을 통해 가져온 이후
도커에서 자동으로 이미지를 만들어줬었습니다.
만약 github 레포지토리가 private 라면, 이미지를 빌드할 때 github 에서
자격증명을 요구하게 됩니다.
이번 포스팅에서는 RSA Key 를 이용해 이 key 를 github 에 등록하여 자격증명을 할 예정입니다.
RSA Key 만들기
우선, Shookiki 라는 이름의 레포지토리를 private 로 바꿔주었습니다.
public 이었던 레포를 private 로 바꿀 때는,
레포지토리 settings 탭에서 Danger Zone을 보면 나와있습니다.
저는 현재 AWS EC2 인스턴스를 이용하여 서버를 구축한 상태입니다.
git clone 을 할 때, public 때는 없었던 Username과 Password 입력을 요구합니다.
물론 올바르게 다 입력하면 clone 이 되긴 하지만, 이 과정을 도커 내부에서 자동화 되게끔 해야하기 때문에
RSA Key를 만들어 진행하도록 하겠습니다.
SSH-Key Gen
RSA 키를 만들기 위해, ssh-keygen 명령어를 이용합니다.
ssh-keygen -t rsa -b 4096 -C "입력할 코멘트"
-t 옵션은 어떤 암호화 방식일지를 선택하는 옵션이고,
-b 는 비트수 입니다. -C 는 코멘트를 입력하는 옵션입니다.
위 명령어를 입력하고, cd 명령어를 통해 경로 이동을 해줍시다.
cd .ssh/
경로 이동을 하고, ls 를 통해 내부 파일들을 살펴보면 위와 같이 키들이 생성되어 있습니다.
id_rsa 는 개인키입니다.
id_rsa.pub 는 공개키로, 이 파일을 github 에 등록해줘야하는 것입니다.
cat 명령어를 통해 id_rsa.pub 을 읽어줍니다.
cat id_rsa.pub
해서 나온 결과를 복사해주시고,
github 페이지로 돌아갑시다.
Github 에 key 등록하기
github 우측 상단 아이콘 > settings 로 들어갑니다.
좌측 탭에서 SSH and GPG keys 를 선택합니다.
이제 초록색 New SSH key 를 클릭해주시고,
아래 사진과 같이 아까 복사해두었던 키를 붙여넣기 해주시면 됩니다.
그럼 이렇게 키가 생성되는 것을 확인할 수 있습니다.
아래와 같은 명령어를 입력해줍시다.
이 과정은, Github 에 대한 인증을 묻는 과정을 pass 하기 위해 진행합니다.
touch /home/ubuntu/.ssh/known_hosts
ssh-keyscan github.com >> /home/ubuntu/.ssh/known_hosts
여기까지 잘 따라 오셨다면, 이제 git clone 명령어를 칠 때 입니다!!!
github 에서 ssh clone 주소를 가져와줍니다.
복사한 후, clone 해줍니다.
git clone c(lone 주소)
묻지도 따지지도 않고 clone 완성~!
이제 이 과정을, 도커 이미지를 빌드하는 과정 속에서도 할 수 있게, 그대로 옮겨주면 됩니다.
Dockerfile 수정
RUN mkdir /root/.ssh/
# 이미지를 가지는 사람은 private key 도 가질 수 있으니 유의!
ADD ./.ssh/id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
도커파일의 상단에 위와 같은 명령어를 입력합니다.
저는 FROM python:3.9.0 (버전은 다를 수 있음) 뒤에 입력했습니다.
전에 실습할 때는 /home/ubuntu 에서 진행을 했었는데,
이미지를 빌드할 때는 ubuntu 가 아닌 root 로 진행하기 때문에 경로가 바뀌었습니다.
이 때 유의해야 할 점은, id_rsa 를 이미지를 빌드할 때 사용하기 때문에
이미지를 가지는 사람이 우리가 만든 private key 도 가질 수 있다는 것입니다!
이렇게 Docker 파일을 생성해주고,
아래쪽에 있었을 git clone 뒤의 주소도 수정해줍니다.
WORKDIR 또한 우리의 repo 이름으로 수정해줍시다.
실제 이미지 Build 하기
저는 mobaxterm 을 이용하여 우리가 수정한 Dockerfile 을 올렸습니다.
아래 명령어를 이용하여 이미지를 빌드해봅시다!
sudo docker image build -t (태그 이름) .
성공적으로 빌드가 된 것을 확인할 수 있습니다!
'Archive > Develop' 카테고리의 다른 글
[ Oracle ] Oracle PL/SQL 화면출력 & 간단 예제 (0) | 2021.05.03 |
---|---|
[ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가 (0) | 2021.04.24 |
[ LeetCode ] 49번 Group Anagrams (0) | 2021.04.19 |
[ LeetCode ] 819번 Most Common Word (0) | 2021.04.18 |
[ LeetCode ] 937번 Reorder Data in Log Files 풀이 (0) | 2021.04.16 |