1편 : 왜 필요한가?
https://subbak2.tistory.com/46
2편 : SAGA 패턴
https://subbak2.tistory.com/96
3편 : 도커 실습 - 설치 & 가동
https://subbak2.tistory.com/103
1. 도커 컨테이너 github으로 버전 관리하기 - 현재 시스템
기본적인 도커 설치, 컨테이너 실행을 해봤으니 github을 통해 버전 관리를 해보기로 했다.
도커 컨테이너를 통해 MySQL 이중화 구성을 먼저 해놨고,
이때 사용한 도커 이미지를 활용하기로 했다.
https://subbak2.tistory.com/106
위 시스템을 요약하면 노트북에 있는 Master DB가
외장 SSD에 Docker로 실행 중인 Slave DB에 실시간 Replication이 되는 구조이다.
여기에 Slave DB의 컨테이너 이미지를
github에 특정시점의 image를 올려 다른 PC 도커에 특정시점 스냅샷 이미지를 마이그레이션 해봤다.
2. WSL을 통해 윈도우에서 바로 Linux 사용하기
기존에 외장 SSD에서 도커 실행을 할때는 VMware를 통해 Ubuntu를 돌리고
그 위에 도커를 실행시켰는데, 이번에는 WSL(Windows Subsytem for Linux)을 활용해봤다.
https://docs.microsoft.com/windows/wsl/about
요약하면 가상머신 없이 Windows에 바로 Ubuntu를 설치하는 것인데,
절차도 간단하고 성능도 더 쾌적한 느낌이었다.
윈도우 파워쉘에서 아래 스크립트만으로 설치가 완료되어 재부팅 후 우분투를 바로 이용할 수 있었다.
wsl --install
특이한 점은 VMware의 경우 network망이 달라서 동일한 port를 이용해 서비스를 제공할 수 있었는데,
WSL의 경우 포트를 공유하기 때문에 다른 포트를 이용해야한다.
Ex> Windows에서 3306 포트를 통해 MariaDB를 사용중이라면,
VMware에서는 3306 포트 사용 가능, WSL Ubuntu에서는 3306 포트 사용 불가능.
* docker에서 서비스 실행시에도 Windows 방화벽을 open해야한다.
3. Docker에서 github으로 이미지 push 하기
1) github에서 token 발급받기
github에서 로그인 후 Settings → Developer settings → Personal access tokens 로
접속을 위한 토큰을 발행했다.
repo, packages의 권한을 부여했다.
2) docker에서 github container registry 로그인하기
-- 1. 깃헙 id로 로그인하기
docker login ghcr.io -u {깃헙 id}
-- 2. password 입력
방금 발행한 tocken 입력
docker는 super user 권한으로 실행해야해서 sudo su 를 하고 시작했다.
subbak2는 깃헙 id이고 password에 github settings에서 발급받은 token을 입력하면,
Login Succeeded가 뜬다.
3) docker에서 github container registry로 push 하기
-- 1. 이미지에 태그 붙이기
docker tag {image id} ghcr.io/{github id}/{패키지이름}:버전명
-- 실제 실행 코드 ( docker images -a 로 image id 확인 가능)
root@ubuntu:/home/jack# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest d462573d8688 3 weeks ago 410MB
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
root@ubuntu:/home/jack# docker tag d462573d8688 ghcr.io/subbak2/mariadb:lts
-- 2. push하기
docker push ghcr.io/{github id}/mariadb:lts
-- 실제 실행 코드
docker push ghcr.io/subbak2/mariadb:lts
4) github packages에서 push된 image 확인
- 설정마다 다를 수 있는데 기본 Private으로 push됐다.
4. Docker에서 github으로 이미지 pull 하기
1) docker image pull
push된 image를 눌러보면 친절하게 어떻게 하라고 나온다.
push할때와 마찬가지로 settings에서 발급받은 tocken을 통해 로그인 해주고
아래처럼 실행하면 된다.
-- 1. 깃헙 id로 로그인하기
docker login ghcr.io -u {깃헙 id}
-- 2. password 입력
방금 발행한 tocken 입력
-- 2. pull script
docker pull ghcr.io/{github id}/{package name}
-- 실제 실행한 코드
docker pull ghcr.io/subbak2/mariadb:lts
2) docker image 확인, 실행
--1. docker image id 확인
docker images
--2. 확인한 image id를 통해 실행
docker run -d -p {port}:{port} -e MYSQL_ROOT_PASSWORD={pw}--name mariadb {image id}
-- 실제실행. 포트 3306, root pw : mariadb로 실행할 경우
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb --name mariadb d462573d8688
--3. container id 확인 후, mysql 접속
docker ps
-- container id 확인
--4. 접속
docker exec -it {container id} mysql -u root -p
* 기타
- WSL을 활용해 docker를 실행할 경우 docker desktop을 통해 gui로 편하게 관리할 수 있다.
https://docs.microsoft.com/ko-kr/windows/wsl/tutorials/wsl-containers
- Dockerhub가 아닌 Github을 사용한 이유는, 정책은 계속 변화하겠지만 dockerhub의 경우 6개월 이상 push, pull 하지 않으면 image가 삭제되기 때문에 github을 사용했다.
* 참고자료
https://ggingmin.notion.site/Ch-4-d71b88a1a1fb47e4b9f93dabf012a179
https://qiita.com/leechungkyu/items/f95998506d45feb15393
'아키텍처 Architecture > Software Architecture' 카테고리의 다른 글
Spring Boot HTTP, HTTPS 모두 사용하기 ( tomcat redirection ) (5) | 2022.02.20 |
---|---|
SpringBoot 무료 SSL 인증서 적용하기 (Certbot) (0) | 2022.02.19 |
금융IT와 MSA - 3. 도커 실습 - 설치&가동 (0) | 2022.01.21 |
금융IT와 MSA - 2. SAGA 패턴 (0) | 2021.12.23 |
Node.js와 MySQL 초스피드 연동하기 1) npm init (2) | 2021.04.14 |