[Docker] 폐쇄망(RHEL, CentOS)에서 Docker를 사용하자.

Junseo Jung·2024년 5월 22일
post-thumbnail

1. [오픈망] 설치파일 준비

도커를 설치하고자 하는 폐쇄망은 다음과 같다.

  • OS: RHEL 8.4
  • Architecture: X86-64

1-1. Apple Silicon Mac에서 X86기반 Red Hat 설치

Red Hat Linux는 유료이다. 이를 클론한 CentOS를 통해 도커 설치파일을 준비하고자 한다. 가상머신을 통해 사용할 수 있지만 간단하게 도커를 통해 환경을 구성하고자 한다.

  1. docker hub에서 원하는 이미지를 찾는다.

    • 필자의 경우 rhel 8.4에 맞는 centOS 8.4를 준비했다.
  2. 해당 이미지를 가져온다.

    docker pull centos:<태그>
  3. x86으로 해당 이미지 실행

    docker run -d --name centos -it -v $(pwd):/mnt/myproject --platform linux/amd64 --privileged=true centos:8 /bin/bash
    • -v: bind mount를 통해 도커에 필요한 설치파일들을 쉽게 로컬에 위치하고자 한다.
    • —platform linux/amd64: arm기반인 m1 맥북 위에서 x86기반의 컨테이너를 위해 설정한다.
    • —privileged=true: 도커 안에서 systemctl을 사용하기 위해 설정한다. 도커 안에서 도커를 띄우기 때문에 필요하다.

테스트 환경 설치 시 수행착오 - 1
운용 서버는 X86기반이었고 로컬 환경은 arm기반이였다.
도커 상에서 설치하는 파일이 달랐고 이때문에 파일을 다시 받았어야 했다.
항상 환경을 확인하자. ($ arch를 통해 확인하자…)

테스트 환경 설치 시 수행착오 - 2
도커로 띄운 centOS에서 도커를 설치 후 실행하기 위해 systemctl을 사용하니 다음과 같은 오류가 발생했다.

System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down

이는 도커가 기본 권한으로 systemctl을 막기 때문으로 —privileged=true를 통해 권한을 주자.

2. [오픈망] 도커 설치에 필요한 파일 설치

도커 설치에는 다음과 같은 도커 패키지가 필요하다.

  • docker-ce
  • docker-ce-cli
  • containerd.io
  • docker-buildx-plugin
  • docker-compose-plugin

또한 해당 패키지들은 여러 패키지에 대해 의존관게를 가진다.

폐쇄망에서는 외부에서 패키지를 불러올 수 없으므로 모든 의존관계를 들고 가야 한다.

2-1. docker 설치를 위한 준비

  • yum-utils를 설치하여 모든 설치파일
    yum install yum-utils
  • docker 설치를 위한 리포지토리 설정
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum 설치 시 수행착오
centOS 8은 지원이 종료되어 yum 실행 시 오류가 발생한다.
https://velog.io/@juns1s/CentOS-CentOS-Cannot-prepare-internal-mirrorlist-No-URLs-in-mirrorlis

2-2. yumdownloader를 통한 도커 설치

  • docker-ce 다운로드
    yumdownloader --resolve docker-ce
  • 설치파일 확인

2-3. 설치 패키지 이동

마운트 되어있으므로 해당 위치에서 압축해서 가져간다.

3. [폐쇄망] 도커 설치

3-1. 도커 설치

  1. 가져간 압축파일을 해제한다.

  2. yum localinstall을 통해 가져간 .rpm파일을 모두 설치하자.

    yum localinstall -y *.rpm

  3. 마지막에 Complete!를 보면 된거다.

폐쇄망 설치 시 수행 착오 -1
unzip이 없었다… tar로 압축해서 가자

폐쇄망 설치 시 수행착오 -2
오픈망의 환경과 폐쇄망의 환경 중 특정 라이브러리가 버전이 달랐다.
rpm-plugin-systemd-inhibit-4.14.3-19.el8.x86_64.rpm
해당 버전만 다시 가져갔다…

3-2. 도커 실행

  1. docker —version을 통해 정상 설치를 확인한다.

  2. systemctl을 통해 도커를 실행한다.

    • 도커를 사용하듯 enable을 통해 재가동시 도커가 실행되도록 등록한다.
     sudo systemctl enable docker.service
     sudo systemctl enable containerd.service

    https://docs.docker.com/engine/install/linux-postinstall/

  3. docker ps를 통해 도커가 실행중인지 확인한다.

    docker —version이 된다 해서 도커가 실행되는게 아니다…

3-3. 도커 적용

이제 도커 설치가 완료되었다. 필요에 따라 도커를 적용하면 된다.

필자의 경우 서버 프로그램을 이미지로 가져와 docker상에서 docker compose를 통해 실행시켰다.


참고.

Red Hat Linux, Fedora, CentOS와 Rocky Linux의 관계

M1 맥에서 x86_64 도커 이미지 빌드 설정하기

https://velog.io/@steveloper/Ubuntu-docker-container-에서-systemctl-사용시-발생하는-문제System-has-not-been-booted-with-systemd-as-init-system-PID-1.-Cant-operate.Failed-to-connect-to-bus-Host-is-down

https://velog.io/@nohsangwoo/centos7.6.1810-폐쇄망에-docker-설치-하는-방법

Install Docker Engine on CentOS

오프라인 환경에서 Docker 운영 | InfoGrab, DevOps 전문 기술 기업 | 인포그랩 | GitLab기반 DevSecOps 구축,컨설팅,교육,기술지원 서비스 제공

Linux post-installation steps for Docker Engine

0개의 댓글