Install Docker Engine on CentOS

Prerequisites

OS requirements

Docker Engine을 설치하려면 CentOS 7 또는 8 버전이 필요합니다.

centos-extras 저장소를 활성화해야 합니다. 이 리포지토리는 기본적으로 활성화되어 있지만 비활성화한 경우 활성화해야 합니다.
오버레이2 스토리지 드라이버를 권장합니다.

Uninstall old versions

이전 버전의 Docker는 docker 또는 docker-engine이라고 했습니다. 이전 버전이 설치된 경우 관련 종속성과 함께 제거합니다.

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 

이미지, 컨테이너, 볼륨 및 네트워크를 포함한 /var/lib/docker/의 내용은 보존됩니다. Docker 엔진 패키지는 이제 docker-ce라고 합니다.

 

Installation methods

필요에 따라 다양한 방식으로 Docker 엔진을 설치할 수 있습니다.

대부분의 사용자는 간편한 설치 및 업그레이드 작업을 위해 Docker의 리포지토리를 설정하고 이 리포지토리에서 설치합니다. 이것이 권장되는 접근 방식입니다.

일부 사용자는 RPM 패키지를 다운로드하여 수동으로 설치하고 업그레이드를 완전히 수동으로 관리합니다. 이는 인터넷에 액세스할 수 없는 시스템에 Docker를 설치하는 것과 같은 상황에서 유용합니다.

Install using the repository

새 호스트 시스템에 처음으로 Docker Engine을 설치하기 전에 Docker 저장소를 설정해야 합니다. 그런 다음 저장소에서 Docker를 설치하고 업데이트할 수 있습니다.

Set up the repository

yum-utils 패키지(yum-config-manager 유틸리티 제공)를 설치하고 안정적인 저장소를 설정합니다.

$ sudo yum install -y yum-utils

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

 

Install Docker Engine

최신 버전의 Docker 엔진 및 containerd를 설치하거나 다음 단계로 이동하여 특정 버전을 설치합니다.

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

GPG 키를 수락하라는 메시지가 표시되면 지문이 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35와 일치하는지 확인하고 일치하는 경우, 수락합니다. 이 명령은 Docker를 설치하지만 Docker를 시작하지 않습니다. 또한 도커 그룹을 생성하지만 기본적으로 그룹에 사용자를 추가하지 않습니다.

a. 특정 버전의 Docker Engine을 설치하려면 리포지토리에 사용 가능한 버전을 확인하고 설치를 원하는 버전을 선택하여 설치합니다.

리포지토리에서 사용 가능한 버전을 나열하고 정렬합니다. 이 예에서는 버전 번호별로 결과를 가장 높은 것에서 가장 낮은 것으로 정렬하여 보여줍니다.

$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64         3:20.10.9-3.el7                       docker-ce-test
docker-ce.x86_64         3:20.10.9-3.el7                       docker-ce-stable
docker-ce.x86_64         3:20.10.8-3.el7                       docker-ce-test
docker-ce.x86_64         3:20.10.8-3.el7                       docker-ce-stable
docker-ce.x86_64         3:20.10.7-3.el7                       docker-ce-test
docker-ce.x86_64         3:20.10.7-3.el7                       docker-ce-stable
docker-ce.x86_64         3:20.10.6-3.el7                       docker-ce-test

 

표시되는 목록은 활성화된 리포지토리에 따라 다르며 CentOS 버전에 따라 다릅니다(이 예에서 .el7 접미사로 표시됨).

docker 설치시 docker-ce-설치버전명으로

패키지 이름(docker-ce)에 첫 번째 콜론(:)에서 하이픈('-' )전까지의 글자(버전)를 조합하여 사용합니다.

(예시 : docker-ce.x86_64 3:20.10.9-3.el7 --> docker-ce-20.10.9)

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
-- version docker-ce-20.10.9 설치 예
$ sudo yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io

위 명령은 Docker를 설치하지만 Docker를 시작하지 않습니다. 또한 도커 그룹을 생성하지만 기본적으로 그룹에 사용자를 추가하지 않습니다.

Start Docker.

$ sudo systemctl start docker

hello-world 이미지를 실행하여 Docker 엔진이 올바르게 설치되었는지 확인합니다. 이 명령은 이미지를 다운로드하고 컨테이너에서 실행합니다. 컨테이너가 실행되면 메시지를 출력하고 종료합니다.

$ sudo docker run hello-world

$ sudo docker ps -a
## result
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
3787345296b7   hello-world   "/hello"   11 seconds ago   Exited (0) 11 seconds ago             pedantic_jang

 

sudo를 사용하여 Docker 명령을 실행합니다.

root 권한이 없는 사용자가 Docker 명령을 실행할 수 있도록 Linux 사후 설치(Linux postinstall\)를 합니다.

 

Post-installation steps for Linux

non-root user 로 도커 관리

Docker 데몬은 TCP 포트 대신 Unix 소켓에 바인딩합니다. 기본적으로 Unix 소켓은 사용자 루트가 소유하고 다른 사용자는 sudo를 통해서만 액세스할 수 있습니다. Docker 데몬은 항상 루트 사용자로 실행됩니다.

docker 명령 앞에 sudo를 사용하지 않으려면 docker라는 Unix 그룹을 만들고 여기에 사용자를 추가합니다. Docker 데몬이 시작되면 docker 그룹의 구성원이 액세스할 수 있는 Unix 소켓을 만듭니다.

 

To run Docker without root privileges, see Run the Docker daemon as a non-root user (Rootless mode).

 

토커 그룹 생성과 사용자 추가

- docker 그룹 생성(docker 설치 시 생성되므로 생략합니다.)

$ sudo groupadd docker

- docker 그룹에 사용자 추가

 $ sudo usermod -aG docker $USER

현재의 user에는 추가된 그룹이 적용되지 않으므로 로그아웃했다가 다시 로그인하여 그룹 구성원 자격을 적용합니다.
가상 머신에서 테스트하는 경우 변경 사항을 적용하려면 가상 머신을 다시 시작해야 할 수도 있습니다.

X Windows와 같은 데스크톱 Linux 환경에서는 세션에서 완전히 로그아웃한 다음 다시 로그인합니다.
Linux에서는 다음 명령을 실행하여 그룹에 대한 변경 사항을 활성화할 수도 있습니다.

## 현재 사용자의 group을 확인
$ groups

## 현재 사용자를 docker group에 추가
$ newgrp docker

## 현재 사용자의 group을 확인
$ groups

 

sudo 없이 docker 명령을 실행할 수 있는지 확인합니다.

 docker run hello-world

 

부팅 시 docker 자동 기동

대부분의 최신 Linux 배포판(RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 이상)은 systemd를 사용하여 시스템 부팅 시 시작되는 서비스를 관리합니다. Debian 및 Ubuntu에서 Docker 서비스는 기본적으로 부팅 시 시작되도록 구성됩니다. 다른 배포판의 부팅 시 Docker 및 Containerd를 자동으로 시작하려면 아래 명령을 수행합니다.

$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

 

자동 시작을을 비활성화합니다.

$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service

 

 

 

'Docker' 카테고리의 다른 글

Docker - 네트워크  (0) 2022.04.21
Docker - 파일 저장 위치  (0) 2022.04.19
Run the Docker daemon as a non-root user (Rootless mode)  (0) 2022.04.18
docker compose 설치  (0) 2022.03.18
Docker Image 만들기  (0) 2022.02.22

+ Recent posts