일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 18870
- network
- powershell
- Cross-origin Resource Sharing
- python
- cron표현식
- cron expression
- 내부망
- 명령어
- array
- 힙
- queue
- priority queue
- heap
- CentOS
- 우선순위 큐
- 개념 정리
- cron
- 자료구조
- docker
- Docker Compose
- 백준
- 스케쥴링
- OSI 7 layer
- 파이썬
- 시험준비
- datastructure
- 좌표 압축
- CORS
- 이분 탐색
Archives
- Today
- Total
고양이와 코딩하기
내부망 Docker 환경 구축 매뉴얼 본문
반응형
정부 사업을 하다보면 보안상의 이유로 내부망에 솔루션을 배포해야하는 경우가 많다.
이때 배포해야하는 솔루션이 docker를 활용하여 구축됐을 경우, 인터넷 접속이 불가능한 내부망(폐쇄망)에 배포하기란 생각보다 절차가 까다롭다.
배포 과정을 정리해 보면 생각보다 절차 간단한데, 막상 아무것도 모르는 상태에서는 각 단계마다 막히게 된다.
향후에도 이와 같이 Docker를 활용하여 구축한 솔루션을 폐쇄망에 배포해야하는 경우가 많을 것이라고 생각되기 때문에, 이번 기회에 배포 과정을 정리해두려고 한다.
목차
1. 개요
1.1 내부망(폐쇄망)에 Docker를 이용한 솔루션 배포 시의 문제점
- 인터넷 접속이 되지 않는 상황에서는 아래와 같은 이유로 배포 작업이 원활하지 않는다
문제점 | 해결 방안 |
Docker, Docker Compose 등의 툴 설치 시 인터넷 접속 불가 | 외부망에서 설치 파일 다운로드 후 내부망 서버에 설치 |
Dcoker image를 pull 하기 위한 container registry 접속 불가 | 외부망에서 Docker image를 압축파일로 만든 후 내부망 서버에 image 등록 |
프로젝트 내의 라이브러리, 패키지 install 불가 (ex> npm install) |
프로젝트에 필요한 모든 패키지를 install 후 Docker image를 build |
1.2 내부망 서버 환경
- 내부망 서버 운영체제: RHEL 8.4
- 사용 DB: mariadb 10.5.8
2. 외부망 준비 작업
2.1 Docker 설치 파일 준비
- 내부망 서버와 동일한 환경에서 docker 관련 rpm 파일들을 미리 세팅
* 아래 예시는 RHEL8 기준
# yum plugin 설치
sudo yum install yum-downloadonly
# docker repo 등록
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
# rpm 파일 다운로드 sudo yum install \ --downloadonly \ --downloaddir=rpms \ docker-ce docker-ce-cli containerd.io
2.2 Docker compose 설치
- 서버 cpu architecture에 맞는 바이너리 파일을 미리 준비
https://github.com/docker/compose/releases
# 운영체제 확인
uname -s
#archtecture 확인
uname -m
Releases · docker/compose
Define and run multi-container applications with Docker - docker/compose
github.com
2.3 Docker images 압축
- Gitlab의 Container Registry 서비스를 이용하여 사전에 준비된 이미지를 각각 pull하여 압축
docker login registry.gitlab.com
# docker pull registry.gitlab.com/경로/이미지명:태그명
registry.gitlab.com/dj-1087/project-name/image-name:tag-name
# docker save -o 파일경로/파일명.tar 이미지명:태그명
docker save -o image-zip/image-name.tar registry.gitlab.com/dj-1087/project-name/image-name:tag-name
3. 내부망 실행 작업
3.1 내부망 서버에 파일 업로드
- scp 명령어 사용
# 파일 업로드
scp -P [포트번호] [파일명] [서버_id]@[서버_ip]:[받는 경로]
# 폴더 업로드
scp -P [포트번호] [폴더명] [서버_id]@[서버_ip]:[받는 경로]
## putty scp를 사용할 경우: scp -> pscp
pscp -P [포트번호] [파일명] [서버_id]@[서버_ip]:[받는 경로]
3.2 Docker 설치
- rpm 파일 서버로 업로드
- rpm을 이용하여 설치
sudo rpm -ivh *.rpm
sudo systemctl start docker
3.3 Docker compose 설치
- docker-compoe 바이너리 파일 업로드
- 파일을 아래 경로로 복사 후 chmod
# 파일 복사
cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 실행 가능하도록 수정
sudo chmod +x /usr/local/bin/docker-compose
3.4 Docker images 등록
- 압축했던 각 이미지 파일을 load 후, docker-compose up
# docker load -i 압축파일명.tar
docker load -i image-name.tar
docker-compose up
# 최초 실행 시 DB 초기 설정을 위해 main_db 만 먼저 up
docker-compose up -d main_db
반응형
'D E V E L O P E R 💻 > Solution Set' 카테고리의 다른 글
네트워크 통신 확인 명령어 정리 (0) | 2022.04.04 |
---|
Comments