[리눅스] CentOS/RHEL 8 - Docker 설치의 모든 것 (방법 3가지)
- IT2/docker
- 2022. 7. 6. 01:11
docker 설치 방법 총 3가지입니다.
외부 통신이 되는 환경과 그렇지 않은 곳, 어디서든 docker를 설치할 수 있게끔 준비했습니다.
외부 통신은 자세히 설명하고, 폐쇄망에서의 설치는 간단하기에 요약하여 작성하였습니다.
docker 기존 버전 제거
설치하고자 하는 특정 버전 또는 최신 버전을 설치하기 전 기존에 구성되어 있는 Docker를 제거한 후 설치하자
# yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
도커 설치 방법① (외부 통신 가능한 환경) - docker repository + yum
yum-utils 설치 및 docker repository 등록
# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-utils 설치를 통해 안정적인 docker 저장소를 활성화하고, docker repo 등록 후에는 /etc/yum.repos.d/ 아래에 docker-ce.repo가 생성되며, 아래와 같이 docker 패키지 조회가 되는지 확인하자!
# yum list | grep -i docker-ce
containerd.io.x86_64 1.6.6-3.1.el8 docker-ce-stable
docker-ce.x86_64 3:20.10.17-3.el8 docker-ce-stable
docker-ce-cli.x86_64 1:20.10.17-3.el8 docker-ce-stable
docker-ce-rootless-extras.x86_64 20.10.17-3.el8 docker-ce-stable
docker-compose-plugin.x86_64 2.6.0-3.el8 docker-ce-stable
docker-scan-plugin.x86_64 0.17.0-3.el8 docker-ce-stable
정상적으로 조회 잘됨!
docker 패키지 설치 (에러 발생)
CentOS, RHEL 8부터는 기본적으로 podman, buildah 패키지가 설치되어 있는데 이거 때문에 아래와 같이 에러가 발생한다. "문제 1:", "문제 2:"를 잘 보면 된다.(밑에 buildah 부분은 길어서 생략됨)
# yum install docker-ce docker-ce-cli containerd.io
마지막 메타 데이터 만료 확인 :0:06:17. 2022년 07월 06일 (수) 오전 12시 01분 35초 이전에 확인
오류:
문제 1: problem with installed package podman-3.2.3-0.11.module_el8.4.0+942+d25aada8.x86_64
- package podman-3.2.3-0.11.module_el8.4.0+942+d25aada8.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
- package podman-3.0.1-6.module_el8.4.0+781+acf4c33b.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
- package podman-3.0.1-7.module_el8.4.0+830+8027e1c4.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
- package podman-3.2.3-0.10.module_el8.4.0+886+c9a8d9ad.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
- package containerd.io-1.6.6-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
- package containerd.io-1.6.6-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
- package containerd.io-1.6.6-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.6.6-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.6.6-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64
- package containerd.io-1.6.6-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64
- cannot install the best candidate for the job
- package runc-1.0.0-64.rc10.module_el8.4.0+522+66908d0c.x86_64 is filtered out by modular filtering
- package runc-1.0.0-65.rc10.module_el8.4.0+819+4afbd1d6.x86_64 is filtered out by modular filtering
- package runc-1.0.0-70.rc92.module_el8.4.0+786+4668b267.x86_64 is filtered out by modular filtering
- package runc-1.0.0-71.rc92.module_el8.4.0+833+9763146c.x86_64 is filtered out by modular filtering
- package runc-1.0.0-72.rc92.module_el8.4.0+964+56b6762f.x86_64 is filtered out by modular filtering
문제 2: package podman-3.0.1-6.module_el8.4.0+781+acf4c33b.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
- package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.3-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64
- package containerd.io-1.4.3-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64
- package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
podman, buildah 패키지 삭제
이 패키지를 먼저 삭제 후 설치해야 충돌이 없으므로 아래처럼 삭제시킨다. (Redhat에서는 이런 문제로 인해 docker 설치를 임의로 차단했음)
# yum remove -y podman
종속성이 해결되었습니다.
============================================================================================================================================================================
패키지 아키텍처 버전 리포지터리 크기
============================================================================================================================================================================
삭제 중:
podman x86_64 3.2.3-0.11.module_el8.4.0+942+d25aada8 @AppStream 48 M
종속 패키지 제거:
cockpit-podman noarch 32-2.module_el8.4.0+886+c9a8d9ad @AppStream 410 k
사용하지 않는 종속 패키지 제거:
conmon x86_64 2:2.0.29-1.module_el8.4.0+886+c9a8d9ad @AppStream 164 k
podman-catatonit x86_64 3.2.3-0.11.module_el8.4.0+942+d25aada8 @AppStream 760 k
트랜잭션 요약
============================================================================================================================================================================
삭제 4 패키지
# yum remove -y buildah
종속성이 해결되었습니다.
============================================================================================================================================================================
패키지 아키텍처 버전 리포지터리 크기
============================================================================================================================================================================
삭제 중:
buildah x86_64 1.21.4-2.module_el8.4.0+942+d25aada8 @AppStream 30 M
사용하지 않는 종속 패키지 제거:
container-selinux noarch 2:2.167.0-1.module_el8.4.0+942+d25aada8 @AppStream 48 k
containers-common x86_64 1:1.3.1-5.module_el8.4.0+886+c9a8d9ad @AppStream 231 k
criu x86_64 3.15-1.module+el8.4.0+10607+f4da7515 @AppStream 1.4 M
fuse-overlayfs x86_64 1.6-1.module_el8.4.0+886+c9a8d9ad @AppStream 145 k
fuse3 x86_64 3.2.1-12.el8 @anaconda 90 k
fuse3-libs x86_64 3.2.1-12.el8 @anaconda 279 k
libnet x86_64 1.1.6-15.el8 @AppStream 166 k
libslirp x86_64 4.3.1-1.module+el8.4.0+10607+f4da7515 @AppStream 129 k
runc x86_64 1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad @AppStream 12 M
slirp4netns x86_64 1.1.8-1.module+el8.4.0+10607+f4da7515 @AppStream 98 k
트랜잭션 요약
============================================================================================================================================================================
삭제 11 패키지
docker 패키지 설치 (성공)
# yum install -y docker-ce docker-ce-cli containerd.io
마지막 메타 데이터 만료 확인 :0:29:27. 2022년 07월 06일 (수) 오전 12시 01분 35초 이전에 확인
종속성이 해결되었습니다.
============================================================================================================================================================================
패키지 아키텍처 버전 리포지터리 크기
============================================================================================================================================================================
설치 중:
containerd.io x86_64 1.6.6-3.1.el8 docker-ce-stable 33 M
docker-ce x86_64 3:20.10.17-3.el8 docker-ce-stable 22 M
docker-ce-cli x86_64 1:20.10.17-3.el8 docker-ce-stable 29 M
종속 패키지 설치 중:
container-selinux noarch 2:2.167.0-1.module_el8.4.0+942+d25aada8 AppStream 52 k
docker-ce-rootless-extras x86_64 20.10.17-3.el8 docker-ce-stable 4.7 M
fuse-overlayfs x86_64 1.6-1.module_el8.4.0+886+c9a8d9ad AppStream 73 k
fuse3 x86_64 3.2.1-12.el8 BaseOS 50 k
fuse3-libs x86_64 3.2.1-12.el8 BaseOS 94 k
libcgroup x86_64 0.41-19.el8 BaseOS 70 k
libslirp x86_64 4.3.1-1.module_el8.4.0+575+63b40ad7 AppStream 69 k
slirp4netns x86_64 1.1.8-1.module_el8.4.0+641+6116a774 AppStream 51 k
취약한 종속 패키지 설치 중:
docker-scan-plugin x86_64 0.17.0-3.el8 docker-ce-stable 3.8 M
트랜잭션 요약
============================================================================================================================================================================
설치 12 패키지
# systemctl start docker
# systemctl status docker
# systemctl enable docker
# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:03:11 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:29 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker 패키지 삭제
# yum remove -y docker-ce docker-ce-cli containerd.io
종속성이 해결되었습니다.
============================================================================================================================================================================
패키지 아키텍처 버전 리포지터리 크기
============================================================================================================================================================================
삭제 중:
containerd.io x86_64 1.6.6-3.1.el8 @docker-ce-stable 125 M
docker-ce x86_64 3:20.10.17-3.el8 @docker-ce-stable 95 M
docker-ce-cli x86_64 1:20.10.17-3.el8 @docker-ce-stable 140 M
사용하지 않는 종속 패키지 제거:
container-selinux noarch 2:2.167.0-1.module_el8.4.0+942+d25aada8 @AppStream 48 k
docker-ce-rootless-extras x86_64 20.10.17-3.el8 @docker-ce-stable 16 M
docker-scan-plugin x86_64 0.17.0-3.el8 @docker-ce-stable 13 M
fuse-overlayfs x86_64 1.6-1.module_el8.4.0+886+c9a8d9ad @AppStream 145 k
fuse3 x86_64 3.2.1-12.el8 @BaseOS 90 k
fuse3-libs x86_64 3.2.1-12.el8 @BaseOS 279 k
libcgroup x86_64 0.41-19.el8 @BaseOS 136 k
libslirp x86_64 4.3.1-1.module_el8.4.0+575+63b40ad7 @AppStream 129 k
slirp4netns x86_64 1.1.8-1.module_el8.4.0+641+6116a774 @AppStream 98 k
트랜잭션 요약
============================================================================================================================================================================
삭제 12 패키지
도커 설치 방법② (폐쇄망 환경) - rpm 파일 + yum
RPM 설치 파일 다운로드
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/
설치하는 운영체제 버전 및 32/64비트 구분하여 다운받으세요~
(제 환경은 RHEL 8.4 64비트입니다.)
containerd.io-1.6.6-3.1.el8.x86_64.rpm
docker-ce-20.10.9-3.el8.x86_64.rpm
docker-ce-cli-20.10.9-3.el8.x86_64.rpm
docker-ce-rootless-extras-20.10.9-3.el8.x86_64.rpm
docker-scan-plugin-0.9.0-3.el8.x86_64.rpm
docker-compose-plugin-2.6.0-3.el8.x86_64.rpm
RPM 설치
rpm 패키지를 서버에 업로드 후 해당 경로 안에서 아래 명령어 수행 (삭제는 yum remove 명령어 이용)
yum install *.rpm
도커 설치 방법③ (폐쇄망 환경) - 설치용 스크립트
설치용 스크립트 파일 다운로드 및 실행
# curl -fsSL https://get.docker.com -o get-docker.sh
# sh get-docker.sh
폐쇄망이므로 curl 명령어로 스크립트 파일 다운이 불가능할 테니, 외부에서 다운로드한 파일을 서버에 업로드시키면 되겠다.