Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

CentOS 7에 최신 버전 Docker 설치하기: 저장소 설정부터 패키지 충돌 해결까지

간단하지만 실용적인 튜토리얼을 소개합니다. 최근 Docker 1.12에서 새롭게 선보인 swarm mode 기반 네이티브 오케스트레이션 기능을 살펴봤는데, 이는 이전 Docker 빌드에는 존재하지 않던 완전히 새로운 기능입니다. 그런데 문제는 CentOS 7의 공식 저장소에는 여전히 구버전만 들어 있다는 점입니다. 최신 버전을 테스트하고 싶어도 당장은 방법이 막막해 보일 수 있습니다.

물론 언젠가는 이 문제가 해결되겠지만, 그렇다고 이 글을 끝까지 읽지 않을 이유는 없습니다. CentOS 저장소는 공식 릴리스보다 항상 뒤처지기 마련이므로, 타협하지 않고 운영체제에 최신 버전을 적용하고 싶다면 이 가이드가 분명 도움이 될 것입니다.

Docker 저장소 설정

첫 번째 작업은 CentOS에 Docker 저장소를 설정하는 것입니다. 필요한 저장소 정보는 Docker 프로젝트 공식 사이트에서 확인할 수 있습니다. 아래 내용을 docker.repo 파일로 작성한 뒤 /etc/yum.repos.d 디렉터리에 저장하세요.

[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

다음 단계는 새로운 Docker 패키지, 특히 새 엔진을 설치하는 것입니다.

yum install docker-engine

그러나 RPM 충돌 오류가 하나 이상 발생할 수 있습니다.

Error: docker-engine-selinux conflicts with docker-selinux-1.10.3-46.el7.centos.10.x86_64
Error: docker-engine conflicts with docker-1.10.3-46.el7.centos.10.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

Transaction check error:
file /usr/bin/docker from install of docker-engine-1.12.1-1.el7.centos.x86_64 conflicts with file from package docker-common-1.10.3-46.el7.centos.10.x86_64

패키지 오류 해결

해결 방법은 기존에 설치된 Docker 패키지(엔진, selinux, common 등)를 모두 제거한 후 새 패키지를 설치하는 것입니다. 수동 작업이 필요하지만 생각보다 오래 걸리지 않습니다.

yum remove docker

구버전 패키지를 제거했다면 이제 새 버전을 설치합니다.

yum install docker-engine

설치 중 오류가 발생하면 남아 있는 패키지를 수동으로 하나씩 제거하세요. 예를 들면 다음과 같습니다.

yum remove docker-common-1.10.3-46.el7.centos.10.x86_64

설치가 성공적으로 완료되면 버전을 확인해 봅니다.

docker -v
Docker version 1.12.1, build 23cf638

이제 docker 서비스 관련 명령도 오류 없이 정상적으로 실행될 것입니다.

마무리

이 튜토리얼이 더 간단할 수는 없습니다. 언젠가 1.12 버전도 오래된 과거가 되겠지만, 비교적 보수적인 리눅스 배포판 서버 에디션을 사용 중이고 저장소 정보가 공식 릴리스 채널보다 약간 뒤처져 있다면, 이 가이드를 활용해 CentOS가 제공하는 다른 장점들은 그대로 유지한 채 최신 Docker 기능을 자유롭게 테스트할 수 있습니다.

어차피 새로운 저장소를 활성화하는 방법 자체는 낯선 것이 아닙니다. 지금까지 여러 차례 다뤄왔고, 저장소 충돌 해결 역시 openSUSE 커스터마이징 과정에서 이미 경험한 바 있습니다. 이제 Docker가 정상적으로 동작하니 모든 것이 순조롭습니다. 아주 간단하고, 우아하며, 효율적입니다. 즐겁게 활용하시고, 앞으로 더 많은 컨테이너 관련 글도 기대해 주세요.

그럼, 즐거운 개발 되세요!