폐쇄망 서버에 Docker 설치하기 (Rocky Linux 8)

2026. 3. 24. 21:59·DevOps
반응형

회사에서 폐쇄망 클라우드 서버에 Docker 설치할 일이 생겼다. 인터넷이 아예 안 되는 환경이라 생각보다 삽질을 많이 했고, 클로드랑 이러쿵 저러쿵 북치기 박치기 하면서 해결은 했는데 새롭게 알게 된 것들이 있어서 정리해둠.


환경

  • 서버 OS: Rocky Linux 8, x86_64
  • 네트워크: 완전 폐쇄망 (외부 인터넷 차단)
  • SSH 포트: 2222 (기본 22 아님)
  • 접속 유저: apuser
  • 내 PC: Windows

폐쇄망 여부 확인하는 법

서버에 SSH 접속 후 아래 명령어로 확인할 수 있다.

# 외부로 패킷 날려보기
ping -c 3 8.8.8.8

# HTTP 통신 되는지
curl -I https://google.com --connect-timeout 5

# DNS 해석 되는지
nslookup google.com

전부 실패하면 완전 폐쇄망이다. ping은 되는데 curl이 안 되면 포트 제한이 있는 것.


기본 전략

폐쇄망이라 서버에서 dnf install docker-ce 같은 명령어로 직접 설치가 안 된다. dnf가 인터넷에서 패키지를 받아오는 방식인데 인터넷이 없으니까.

그래서 이렇게 한다:

  1. 인터넷 되는 내 PC에서 필요한 파일 전부 다운로드
  2. SCP로 서버에 파일 전송
  3. 서버에서 로컬 파일로 설치

SCP가 뭔지

SCP(Secure Copy Protocol)는 SSH를 이용해서 파일을 전송하는 방식이다. SSH랑 같은 포트를 사용하기 때문에 SSH가 되면 SCP도 된다.

scp -P [포트번호] [보낼파일] [유저명]@[서버IP]:[받을경로]

SSH 포트가 2222이면 SCP도 -P 2222 로 맞춰줘야 한다. (SSH는 소문자 -p, SCP는 대문자 -P 임)


SFTP랑 SCP 차이

SCP가 안 될 때 SFTP로 대신 시도해볼 수 있다. SFTP는 SSH 위에서 돌아가는 파일 전송 프로토콜인데, 서버 sshd_config에 아래 설정이 있어야 동작한다.

Subsystem sftp /usr/libexec/openssh/sftp-server

설정 확인하는 법:

sudo grep -E "Subsystem|PasswordAuthentication" /etc/ssh/sshd_config

오늘 작업한 서버는 Subsystem 설정이 이미 있었는데도 SFTP가 안 됐다. 이유는 아직 정확히 모르겠다.... 결국 SCP로 해결했다.


1. RPM 파일 받기

브라우저에서 아래 주소 접속 후 파일 직접 클릭해서 다운로드.

https://download.docker.com/linux/rhel/8/x86_64/stable/Packages/

받을 파일 5개:

containerd.io-1.7.27-3.1.el8.x86_64.rpm
docker-ce-cli-29.3.0-1.el8.x86_64.rpm
docker-ce-29.3.0-1.el8.x86_64.rpm
docker-buildx-plugin-0.31.1-1.el8.x86_64.rpm
docker-compose-plugin-5.1.1-1.el8.x86_64.rpm

버전 고를 때 주의할 점:

  • docker-ce랑 docker-ce-cli는 버전 번호가 반드시 같아야 함
  • docker-ce가 요구하는 containerd.io 최소 버전이 있음
    • 예: docker-ce 29.3.0은 containerd.io >= 1.7.27 필요
    • 나는 처음에 1.7.26 받았다가 의존성 오류남
    • 설치 시도하면 오류 메시지에 필요한 버전이 나오니까 그걸 보고 맞춰서 다시 받으면 됨

2. SCP로 서버 전송

Windows PowerShell에서 실행. 파일을 한 줄로 묶어서 보내면 비밀번호를 한 번만 입력하면 된다.

scp -P 2222 `
  C:\docker-files\containerd.io-1.7.27-3.1.el8.x86_64.rpm `
  C:\docker-files\docker-ce-cli-29.3.0-1.el8.x86_64.rpm `
  C:\docker-files\docker-ce-29.3.0-1.el8.x86_64.rpm `
  C:\docker-files\docker-buildx-plugin-0.31.1-1.el8.x86_64.rpm `
  C:\docker-files\docker-compose-plugin-5.1.1-1.el8.x86_64.rpm `
  apuser@서버IP:~/

비밀번호 입력할 때 화면에 아무것도 안 보이는 게 정상이다. 다 치고 엔터 누르면 전송 시작됨.

처음 접속하는 서버면 아래처럼 물어보는데 yes 입력하면 된다.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

3. 서버에서 Docker 설치

SSH 접속 후:

# 파일 읽기 권한 부여 (없으면 Can not load RPM file 오류남)
sudo chmod 644 ~/*.rpm

# 설치
sudo dnf install -y --disablerepo="*" \
  ./containerd.io-1.7.27-3.1.el8.x86_64.rpm \
  ./docker-ce-cli-29.3.0-1.el8.x86_64.rpm \
  ./docker-ce-29.3.0-1.el8.x86_64.rpm \
  ./docker-buildx-plugin-0.31.1-1.el8.x86_64.rpm \
  ./docker-compose-plugin-5.1.1-1.el8.x86_64.rpm

여기서 --disablerepo="*" 옵션이 핵심이다. 이게 없으면 폐쇄망인데도 dnf가 외부 repo에 접근을 시도하고 타임아웃이 남. 이 옵션을 붙이면 외부 repo는 전부 무시하고 지금 지정한 로컬 파일만 보고 설치한다.

Complete! 뜨면 설치 완료.


4. Docker 서비스 시작

# 서비스 시작 + 부팅 시 자동 시작 등록
sudo systemctl enable --now docker

# 상태 확인
sudo systemctl status docker

# 버전 확인
docker --version

삽질 포인트 정리

문제 원인 해결

containerd 의존성 오류 docker-ce가 요구하는 버전보다 낮은 containerd 다운로드 오류 메시지에서 필요한 버전 확인 후 다시 받기
Can not load RPM file RPM 파일 읽기 권한 없음 sudo chmod 644 *.rpm
dnf 설치 중 타임아웃 폐쇄망인데 외부 repo 접근 시도 --disablerepo="*" 옵션 추가
SFTP 접속 안 됨 원인 불명 (Subsystem 설정은 있었음) SCP로 대신 전송
tmp 폴더에 넣으려다가.. tmp 폴더에 rpm 파일을 넣고 돌리는게 잘 안되는거 같았다 아무래도 권한 문제도 조금 있는듯 함. 그냥 user 경로에 바로 넣어버리자

 

반응형

'DevOps' 카테고리의 다른 글

Docker 기본 개념과 명령어 정리  (3) 2026.03.25
사내 서버에서 Jenkins CI/CD 구축하기 (Synology NAS + Spring Boot + Windows)  (0) 2026.03.24
'DevOps' 카테고리의 다른 글
  • Docker 기본 개념과 명령어 정리
  • 사내 서버에서 Jenkins CI/CD 구축하기 (Synology NAS + Spring Boot + Windows)
fkqlaus
fkqlaus
안녕하세요 Java, Spring boot 공부하는 주니어 개발자입니다
  • fkqlaus
    개발자가 끄적끄적 블로그
    fkqlaus
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Spring boot (3)
      • 프레임워크 (3)
      • Java (6)
      • DevOps (3)
      • DB (1)
      • CS (1)
      • GIS (1)
      • 알고리즘 문제풀이 (9)
      • 알고리즘 (0)
  • 인기 글

  • 태그

    D2
    완전탐색
    Java
    개발자
    알고리즘
    collection
    list
    SWEA
    db
    서버
    docker
    cs
    DevOps
    컴퓨터
    프로그래머스
    iterator
    코딩테스트
    데이터베이스
    개발
    spring
  • hELLO· Designed By정상우.v4.10.3
fkqlaus
폐쇄망 서버에 Docker 설치하기 (Rocky Linux 8)
상단으로

티스토리툴바