고양이와 코딩하기

내부망 Docker 환경 구축 매뉴얼 본문

D E V E L O P E R 💻/Solution Set

내부망 Docker 환경 구축 매뉴얼

dj-1087 2022. 3. 14. 19:31
반응형

정부 사업을 하다보면 보안상의 이유로 내부망에 솔루션을 배포해야하는 경우가 많다.

이때 배포해야하는 솔루션이 docker를 활용하여 구축됐을 경우, 인터넷 접속이 불가능한 내부망(폐쇄망)에 배포하기란 생각보다 절차가 까다롭다.

배포 과정을 정리해 보면 생각보다 절차 간단한데, 막상 아무것도 모르는 상태에서는 각 단계마다 막히게 된다.

향후에도 이와 같이 Docker를 활용하여 구축한 솔루션을 폐쇄망에 배포해야하는 경우가 많을 것이라고 생각되기 때문에, 이번 기회에 배포 과정을 정리해두려고 한다.

 

목차

  1. 개요
    1. 내부망 Docker 환경 구축 시의 문제점 및 해결 방안
    2. 내부망 서버 환경
  2. 외부망 준비 작업
    1. Docker 설치 파일 준비
    2. Docker compose 설치 파일 준비
    3. Docker images 압축
  3. 내부망 실행 작업
    1. 내부망 서버에 파일 업로드
    2. Docker 설치
    3. Docker compose 설치
    4. Docker images 등록

 

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 설치

# 운영체제 확인 
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