RHEL(Red Hat Enterprise Linux)에서 Docker 설치하기 (feat. docker swarm)

박희중·2024년 5월 6일
1

Infra

목록 보기
1/1
post-thumbnail

배경

우분투 환경에서 컨테이너 오케스트레이션 툴인 docker swarm을 이용해 고가용성으로 애플리케이션을 관리한 서비스가 있다. (k8s로 관리하기엔 투머치였기 때문에)

해당 서비스를 RHEL8 환경의 서버에 구축해야하는 상황이었는데 구축하던 과정에서 RHEL에서는 도커스웜이 작동하지 않는 문제가 있었다.
자세히 파보니 도커 자체가 설치되지 않는 문제였고 RHEL에서는 docker 대신에 podman이란 툴을 사용하고, 대신 docker cli와 호환되는 구조였다.

따라서 RHEL에서 docker swarm init 이란 명령어는 사실은 podman swarm init이란 명령어로 작동했던 것.
podman swarm이란 툴은 존재하지 않기 때문에 발생하는 문제였다.

이에 RHEL서버에서 podman이 아닌 진짜 docker를 설치하고 docker swarm init이 가능하도록 한 과정을 공유하고자, 추후 비슷한 문제가 발생했을때를 대비해 기록하고자 한다.


아래 예시에서의 서버 환경은 RHEL8 환경임을 알린다.



1. podman 설치

sudo dnf install podman 커맨드로 파드맨 설치 후
podman 명령어는 작동하지만,
docker 명령어는 작동하지 않는 모습



2. docker 설치

sudo dnf install docker 실행시 그냥 docker 패키지가 아닌 podman-docker 패키지가 설치되는 모습



3. docker 커맨드시 podman이 대신 실행

2. docker 설치(sudo dnf install docker) 으로 podman-docker 패키지를 설치한 후,
docker --version을 실행시 podman 버전이 뜨는 모습

(docker swarm init 실행시 podman swarm 커맨드는 없는 커맨드라고 경고가 뜬다)



4. podman 삭제

sudo dnf remove podman 으로 설치되어있던 podman 삭제



5. podman 삭제 후 docker 커맨드

remove podman을 하는 과정에서 podman-docker도 삭제되어 그런지 docker --version/usr/bin/docker 에러로그로 뜨고,
podman --version/usr/bin/podman 에러로그로 뜬다

아무튼 podman, docker 아무것도 없는 모습

(위에서 dnf install docker로 도커를 설치할때는 도커가 설치된 것이 아닌 파드맨과 도커의 연결 패키지 podman-docker만 설치된 것으로 보임)



6. podman 삭제 후 docker 설치

  • sudo dnf install docker

sudo dnf install docker으로 docker 설치를 명령했는데 podman 설치와 podman-docker를 설치하는 모습 (실행X)



  • sudo yum install docker

yum으로 도커 설치 시도해도 마찬가지 (실행X)



7. docker docs에서의 Install Docker Engine on RHEL

No match for argument 발생

커맨드 출처: https://docs.docker.com/engine/install/rhel/



8. docker 설치 스크립트 사용 (실패)

curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh

에러 발생

# Executing docker install script, commit: c2de0811708b6d9015ed1a2c80f02c9b70c8ce7b
Packages for RHEL are currently only available for s390x.



9. docker docs에서의 Install Docker Engine on CentOS (성공)

docker docs를 자세히 읽어보니 이런 문구가 있었다.

7번에서 사용한 커맨드는 s390x architecture (IBM Z)에서만 유효하며,
다른 아키텍처들은 아직 RHEL 커맨드로는 지원되지 않는다.

다른 아키텍처를 위해선 CentOS 패키지를 설치해야한다.
https://docs.docker.com/engine/install/centos/

따라서 IBM 아키텍처가 아닌 RHEL 환경은
Install Docker Engine on RHEL 이 아닌
Install Docker Engine on CentOS 으로 설치를 진행해야한다.


sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker(on CentOS)설치를 진행시 정상적으로 설치를 성공할 수 있었고
docker swarm init도 정상적으로 작동하였다.



정리

IBM 아키텍처가 아닌 (대부분의?) RHEL 서버들은 CentOS docker 설치를 통해 설치해야한다.
Install Docker Engine on CentOS

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

역시 공식 문서에 해답이 있었다.
다시 한번 공식 문서의 중요성을 느꼈고 꼼꼼히 읽어야겠다는 교훈을 얻었다.

(덕분에 리눅스와 도커와 더 친해진 것 같기도...)

profile
백엔드 엔지니어 박희중입니다.

0개의 댓글