본문 바로가기
FullStack/30. CI.CD

Docker 1.13 -> 20.10 업그레이드

by nakanara 2022. 4. 8.
반응형

  • OS: CentOS 7
  • Docker: 1.13 -> 20.10

CentOS7에 Docker를 yum을 통하여 1.13 버전을 설치하여 사용하고 있었다.

$ docker version
Client:
Version:         1.13.1
API version:     1.26
Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
Go version:      go1.10.3
Git commit:      7f2769b/1.13.1
Built:           Mon Aug  5 15:09:42 2019
OS/Arch:         linux/amd64

Server:
Version:         1.13.1
API version:     1.26 (minimum version 1.12)
Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
Go version:      go1.10.3
Git commit:      7f2769b/1.13.1
Built:           Mon Aug  5 15:09:42 2019
OS/Arch:         linux/amd64
Experimental:    false

Tomcat 최신 이미지가 필요하여 실행하였는데 컨테이너에서 ls 명령어를 실행하였을 때 퍼미션과 소유권이 문자가 ?로 표시되었다.

(대략 이런 모습)

$ ls
???? ? ?? ??  catalina.log

Docker 기반에서 WAS가 운영되고 있기 때문에 웬만해서는 업그레이드를 하고 싶지 않았다. 계획처럼 업그레이드가 되지 않을 것을 알기 때문에 하지만 이후에도 관련 이슈는 계속 발생할 것이며, 보안에도 문제가 될 것이므로 진행하기로 결정했다.

1. 도커 서비스 중지 및 삭제

# 도커 서비스 중지
$ sudo systemctl docker

# 도커 이전 버전 삭제 
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc

2. 도커 설치를 위한 저장소 등록

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/rhel/docker-ce.repo

3. 도커 최신 버전 설치

$ sudo yum install docker-ce docker-ce-cli containerd.io

ERROR 404 오류

HTTPS Error 404 - Not Found - https://download.docker.com/linux/rhel/7Server/x86_64/stable/repodata/repomd.xml

저장소를 설정 파일의 등록된 URL 주소가 변경되었기 때문에 yum을 통하여 설치를 진행하면 404 오류가 발생한다. 저장소 정보에서 URL 변경이 필요하다.

  • 저장소 설정 파일

$ sudo vi /etc/yum.repo.d/docker-ce.repo

  • 저장소 파일 내용
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/rhel/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/rhel/gpg

URL 주소 /rhel/$releasever/ -> /centos/7/ 변경 필요

  • vi에서 치환

:%s /rhel\/$releasever/centos\/7/g명령어를 이용하여 rhel/$releasever -> centos/7로 변경하자

  • sed 이용
$ sed -i 's/rhel\/$releasever/centos\/7/g' /etc/yum.repos.d/docker-ce.repo

ERROR 의존성 라이브러리 필요(slirp4netns, fuse-overlayfs)

slirp4netns >= 0.4 의존성 라이브러리 필요

$ sudo vi /etc/yum.repos.d/docker-ce.repo
  • 추가 저장소 정보
[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=1
gpgkey=http://centos.org/keys/RPM-GPG-KEY-CentOS-7

4. 도커 실행

  • 도커 버전
$ docker version

docker version  
Client: Docker Engine - Community  
Version: 20.10.14  
API version: 1.41  
Go version: go1.16.15  
Git commit: a224086  
Built: Thu Mar 24 01:49:57 2022  
OS/Arch: linux/amd64  
Context: default  
Experimental: true

Server: Docker Engine - Community  
Engine:  
Version: 20.10.14  
API version: 1.41 (minimum version 1.12)  
Go version: go1.16.15  
Git commit: 87a90dc  
Built: Thu Mar 24 01:48:24 2022  
OS/Arch: linux/amd64  
Experimental: false  
containerd:  
Version: 1.5.11  
GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8  
runc:  
Version: 1.0.3  
GitCommit: v1.0.3-0-gf46b6ba  
docker-init:  
Version: 0.19.0  
GitCommit: de40ad0

5. 도커 이미지 파일 삭제 오류

정상적으로 도커는 실행되었지만, 이미지 파일이 삭제되지 않았다.
또한 동일 버전의 도커 이미지가 계속 받아지는 현상도 발생하였다.

도커 이미지 손상으로 삭제 후 재설정 필요
삭제 전 도커 생성 스크립트 사전 백업 및 확인 필요, 컨테이너가 다 삭제됨

$ docker rmi tomcat:8.5.78
Error: No such image: tomcat:8.5.78
  • 도커 컨테이너 상태 파일 삭제
$ sudo systemctl stop docker
$ sudo rm -rf /var/lib/docker
$ sudo systemctl start docker

참고

반응형