DevOps/Container

[Container] 폐쇄망 환경에서 Docker 설치하는 방법

kyoulho 2024. 9. 29. 18:06

인터넷에 연결되지 않은 폐쇄망 환경에서 Docker를 설치하려면 필요한 패키지와 의존성 파일들을 미리 준비하고 로컬 레포지토리를 구성해야 한다.
 

1. 폐쇄망 OS 정보 확인

폐쇄망 서버의 운영체제(OS) 정보와 플랫폼 정보를 확인한다.

cat /etc/os-release  # 배포판의 이름과 버전 정보 출력
uname -r             # 커널 버전 확인
uname -m             # 시스템 아키텍처 확인 (예: x86_64, aarch64)

# 한번에 보기
hostnamectl


2. 동일한 환경의 컨테이너 실행

폐쇄망 서버와 동일한 OS 환경과 플랫폼을 가진 컨테이너를 실행하여 필요한 패키지를 다운로드한다.
arm을 사용하는 맥북일 경우 rosetta, qemu 등을 설치해야한다.

docker run --platform linux/amd64 -it --name centos_env -v /host/path/to/rpms:/rpms rocky8.4 /bin/bash
  • --platform linux/amd64: 플랫폼 지정 (x86_64 아키텍처의 경우)
  • rocky8.4: 폐쇄망 서버의 OS 버전에 맞게 변경
  • /host/path/to/rpms: 호스트 머신의 실제 디렉터리 경로
  • /rpms: 컨테이너 내부 디렉토리


3. 의존성 패키지 다운로드

컨테이너 내에서 dnf 또는 yum을 사용하여 Docker 설치에 필요한 패키지들과 의존성들을 모두 다운로드한다.

3.1 패키지 매니저 준비

# Docker 레포지토리를 추가하기 위해 dnf-plugins-core 패키지를 설치 
dnf install -y dnf-plugins-core

# Docker 레포지토리 설정
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.2 Docker 패키지 다운로드

docker-ce-cli, containerd.io는 docker-ce의 의존성으로 함께 받게 된다.

dnf install --downloadonly --downloaddir=/rpms docker-ce
  • --downloadonly: 패키지 다운로드만 하고 설치하지 않음
  • --downloaddir=/rpms: 패키지를 저장할 디렉터리 지정

3.3 시스템 업데이트 패키지 다운로드

docker-ce를 설치하기 위해 업데이트가 필요한 패키지들은 다운로드가 되지 않는다. 따라서 dnf reinstall 명령어를 사용하여 해당 패키지들을 다운로드한다.

dnf reinstall --downloadonly --downloaddir=/rpms 업데이트_필요한_패키지


4. createrepo 설치 및 메타데이터 생성

4.1 createrepo 설치

dnf install createrepo

4.2 레포지토리 메타데이터 생성

createrepo /rpms  # /rpms 디렉토리에 repodata 폴더 생성


5. 폐쇄망에서 로컬 레포지토리 구성

5.1 패키지 복사

외장 하드나 USB로 /rpms 디렉토리 전체를 폐쇄망 서버의 /root/rpms 등에 복사한다.

5.2 로컬 레포지토리 설정

vi /etc/yum.repos.d/local.repo

다음 내용을 추가한다:

[LocalRepo]
name=Local Repository
baseurl=file:///root/rpms
enabled=1
gpgcheck=0
module_hotfixes=1
  • baseurl: 패키지가 있는 디렉토리 경로
  • module_hotfixes: 모듈 관련 에러가 발생하면 추가한다.

5.3 캐시 업데이트

dnf clean all    # 캐시 정리
dnf makecache    # 캐시 생성

5.4 Docker 설치

dnf install docker-ce
# 필요한 경우 --skip-broken 옵션 사용


8. Docker 데몬 시작 및 확인

8.1 Docker 데몬 시작

systemctl start docker
systemctl enable docker

8.2 Docker 상태 확인

systemctl status docker

8.3 Docker 버전 확인

docker version
728x90