본문 바로가기
카테고리 없음

[Docker] CentOS 7 폐쇄망에서 Docker 프로그램 배포하기

by JustJunsu 2025. 2. 14.

이번 포스팅에서는 폐쇄망에서 Docker 프로그램을  배포하는 방법을 포스팅 하겠습니다.

 

1. 폐쇄망이란?

폐쇠망 네트워크

폐쇄망(오프라인 네트워크)이란, 외부(인터넷)과의 연결이 전혀 없는 네트워크 환경을 의미합니다.

  • 회사 내부망, 보안이 철저한 연구소, 군 기관 등에서 이러한 폐쇄망 환경이 자주 사용됩니다.
  • 외부 인터넷 접근이 불가능하므로, 필요한 패키지와 설치 파일, Docker 이미지 등을 사전에 준비해서 내부망(또는 USB, DVD 등 물리 매체)을 통해 옮겨야 합니다.

2. 준비사항

폐쇄망 환경에서 Docker를 설치하고, 프로그램을 배포하기 위해서는 다음과 같은 준비가 필요합니다.

2.1 Docker 설치 RPM 파일 준비

  1. Docker 설치를 위한 RPM 패키지 다운로드
    • 일반적으로 docker-ce, docker-ce-cli, containerd.io 등의 RPM 파일이 필요합니다.
    • 인터넷이 되는 환경에서 Docker 공식 저장소를 참고하여 버전에 맞는 RPM 파일들을 미리 다운로드합니다.
  2. 의존성(Dependencies) 확인
    • CentOS 7 버전에 따라 의존 관계가 달라질 수 있으므로, yum localinstall 명령으로 필요한 의존성 패키지를 확인해두면 좋습니다.
    • 다만, 폐쇄망에서는 추가 의존 패키지도 오프라인으로 설치해야 하므로, 종속 패키지가 있는지 미리 체크가 중요합니다.
  3. 파일 이동
    • 다운로드 받은 RPM 패키지를 폐쇄망 환경(CentOS 7 서버)으로 옮깁니다.
    • USB 메모리, 사내 파일 서버 등을 활용할 수 있습니다.
# Docker 패키지 확인 (버전에 따라 다를 수 있음)
yum list docker-ce --showduplicates | sort -r

# 특정 버전 다운로드 예시 (버전 번호 예시)
yum install --downloadonly --downloaddir=./docker-rpm docker-ce-20.10.10 docker-ce-cli-20.10.10 containerd.io

 

2.2 Docker 이미지 준비

  1. docker save 명령으로 이미지 추출
    • 배포할 Docker 이미지를 미리 외부에서 다운로드 및 Pull 한 뒤 docker save를 사용해 .tar 파일 형태로 저장합니다.
# 외부 환경에서
docker pull httpd:2.4
docker save httpd:2.4 -o httpd_2.4.tar

 

 

 

  2. 이미지 파일 이동

  • 저장된 .tar 파일(httpd_2.4.tar)을 폐쇄망 환경으로 옮깁니다.

3. docker load 명령으로 이미지 로드

  • 폐쇄망 환경에서 아래와 같이 이미지를 복원합니다

 

# 폐쇄망(CentOS 7) 환경에서
docker load -i httpd_2.4.tar

 

3. Docker Compose 파일 준비 (네트워크 설정 포함)

폐쇄망 환경에서도 Docker Compose를 활용해 여러 컨테이너를 쉽게 관리할 수 있습니다. 이를 위해선 사전에 Docker Compose 바이너리 역시 준비해야 합니다.

3.1 Docker Compose 바이너리 다운로드

  • 최신 Compose를 사용하고 싶다면 Docker Compose GitHub에서 docker-compose-Linux-x86_64 (버전명 포함) 바이너리를 받아 폐쇄망 서버로 옮깁니다.
  • 옮긴 후, 실행 권한을 부여합니다.
chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

 

    • 정상 설치를 위해 docker-compose --version 명령어로 버전을 확인합니다.

3.2 docker-compose.yml 작성

  • 여러 컨테이너를 동시에 실행하려면 docker-compose.yml 파일을 구성합니다.
  • 네트워크 설정도 Compose 파일 안에서 따로 정의하거나, 필요하다면 사전에 별도의 Docker 네트워크를 만들어 사용할 수 있습니다.
  • 예시:
     
version: '3'
services:
  web:
    image: httpd:2.4
    container_name: httpd-server
    ports:
      - "80:80"
    networks:
      - custom-net

networks:
  custom-net:
    driver: bridge

 

3.3 도커 네트워크 생성 (필요 시)

  • Compose 파일에서 자동으로 생성되도록 설정할 수도 있지만, 별도로 네트워크를 생성해 관리하고 싶다면 다음 명령어 사용:
docker network create --driver bridge custom-net

 

컨테이너 간 통신, IP 대역 분리 등에 유리합니다.

 

4. sh 파일 만들기

폐쇄망 환경에서 배포를 자동화하기 위해 sh 스크립트를 만들어 두면 편리합니다. 서버를 새로 설치하거나, 다른 폐쇄망 서버에 확장해야 할 때도 동일한 스크립트로 빠르게 배포할 수 있습니다.

 

4.1 Shell 스크립트 예시

#!/bin/bash
# install_docker.sh

echo ">>> Docker 설치를 시작합니다."

# 1) Docker 설치 (RPM 파일 기준)
echo ">>> Docker RPM 설치 중..."
yum localinstall -y docker-ce-20.10.10-3.el7.x86_64.rpm \
                  docker-ce-cli-20.10.10-3.el7.x86_64.rpm \
                  containerd.io-1.4.11-3.1.el7.x86_64.rpm

# 2) Docker 서비스 시작 및 부팅 시 자동 실행 설정
systemctl start docker
systemctl enable docker

echo ">>> Docker 설치 및 서비스 설정이 완료되었습니다."

# 3) Docker 이미지 로드
echo ">>> Docker 이미지 로드 중..."
docker load -i httpd_2.4.tar

# 4) Docker Compose로 컨테이너 구동
echo ">>> Docker Compose를 통한 컨테이너 실행..."
docker-compose up -d

echo ">>> 컨테이너가 정상적으로 실행되었습니다."

 

5. 결론

  • 의존 패키지 확인: 폐쇄망 환경에서는 패키지 다운로드가 불가능하므로, 외부에서 미리 의존성을 모두 챙겨와야 합니다.
  • 버전 호환성: CentOS 7의 커널 버전에 따라 일부 Docker 기능이 제한될 수 있으므로, 가능한 최신 안정 버전을 사용하는 것이 좋습니다.
  • 보안 정책 준수: 폐쇄망은 보안이 중요하므로, Docker 데몬 설정, 방화벽 규칙, SELinux 등 추가 설정을 꼼꼼히 확인해야 합니다.
  • 자동화 스크립트: 설치 및 배포 과정을 스크립트로 만들어두면, 유지보수가 쉽고 오류 발생 가능성을 줄일 수 있습니다.

 

  • 폐쇄망 특성상 온라인 접근이 불가능하므로, 사전 준비(필요 RPM, Docker 이미지 등)가 가장 중요합니다.
  • 이후 Docker 설치 → 이미지 로드 → Docker Compose 실행 순서로 컨테이너를 구동하면 문제없이 오프라인 배포를 진행할 수 있습니다.