우분투 환경에서 컨테이너 오케스트레이션 툴인 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 환경임을 알린다.
sudo dnf install podman
커맨드로 파드맨 설치 후
podman 명령어는 작동하지만,
docker 명령어는 작동하지 않는 모습
sudo dnf install docker
실행시 그냥 docker 패키지가 아닌 podman-docker 패키지가 설치되는 모습
2. docker 설치(sudo dnf install docker)
으로 podman-docker 패키지를 설치한 후,
docker --version
을 실행시 podman 버전이 뜨는 모습
(docker swarm init
실행시 podman swarm
커맨드는 없는 커맨드라고 경고가 뜬다)
sudo dnf remove podman
으로 설치되어있던 podman
삭제
remove podman을 하는 과정에서 podman-docker
도 삭제되어 그런지 docker --version
시 /usr/bin/docker
에러로그로 뜨고,
podman --version
시 /usr/bin/podman
에러로그로 뜬다
아무튼 podman, docker 아무것도 없는 모습
(위에서 dnf install docker
로 도커를 설치할때는 도커가 설치된 것이 아닌 파드맨과 도커의 연결 패키지 podman-docker
만 설치된 것으로 보임)
sudo dnf install docker
sudo dnf install docker
으로 docker 설치를 명령했는데 podman
설치와 podman-docker
를 설치하는 모습 (실행X)
sudo yum install docker
yum으로 도커 설치 시도해도 마찬가지 (실행X)
Install Docker Engine on RHEL
No match for argument 발생
커맨드 출처: https://docs.docker.com/engine/install/rhel/
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.
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
역시 공식 문서에 해답이 있었다.
다시 한번 공식 문서의 중요성을 느꼈고 꼼꼼히 읽어야겠다는 교훈을 얻었다.
(덕분에 리눅스와 도커와 더 친해진 것 같기도...)