728x90
인터넷에 연결되지 않은 폐쇄망 환경에서 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
'DevOps > Container' 카테고리의 다른 글
[Container]Podman 및 CRI-O의 오래된 컨테이너 자동 삭제 정책 (0) | 2025.03.05 |
---|---|
[Container] 호스트 디렉토리 마운트 시 Linux과 Mac 환경의 차이점 (0) | 2024.10.08 |
[Container] 컨테이너 사용자 설정 및 권한 (0) | 2024.09.14 |