인터넷에 연결되지 않은 폐쇄망 환경에서 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] 호스트 디렉토리 마운트 시 Linux과 Mac 환경의 차이점 (0) | 2024.10.08 |
---|---|
[Container] 컨테이너 사용자 설정 및 권한 (0) | 2024.09.14 |