Profile picture

[Docker] 도커 쉽게 설치하기! (CentOS / Ubuntu)

JaehyoJJAng2022년 04월 10일

▶︎ 도커 설치

‣ Ubuntu

  • 설치환경 : Ubuntu:20.04

1. 커널버전 확인

uname -r

2. 패키지 설치

sudo apt-get update
sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release

3. 도커 gpg 키 등록 Deprecated

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

위 방법은 Deprecated 된 방법이다.


apt-key가 deprecated 됨으로 아래 방법으로 /etc/apt/trusted.gpg.d/ 경로에 gpg 키를 등록해줘야 한다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg

4. 도커 레포지토리 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. 패키지 업데이트

apt-get update

6. 도커 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io

7. 도커 서비스 작동 확인

systemctl status docker.service

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-09 09:18:46 UTC; 16s ago

8. 현 사용자 ID를 docker group 에 포함

sudo usermod -aG docker ${USER}

9. 도커 버전 확인

docker -v

‣ CentOS

  • 설치환경 : CentOS 7

1. yum-utils 설치

sudo yum install -y yum-utils

2. Stable repository 추가

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

3. 패키지 목록에서 도커 조회

yum list | grep "docker*"

4. 도커 설치

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

5. 도커 서비스 시작

sudo systemctl enable --now docker.service
sudo systemctl restart docker.service

6. 현재 유저 도커 그룹에 추가

sudo usermod -aG docker ${USER}

▶︎ 도커 컴포즈 설치

docker-compose 설치

# Docker Compose 파일 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 실행 권한 수정 및 심볼릭 생성
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

다음 명령 실행 시 버전 확인이 가능하면 성공

docker-compose --version

▶︎ 셸 스크립트로 설치

  • 도커 설치 과정을 셸 스크립트로 작성하여 자동화해보기.

1. install-docker.sh 파일에 아래 내용 붙여넣기

#!/usr/bin/env bash
## INFO: https://docs.docker.com/engine/install/ubuntu/

set -euf -o pipefail

#### Require variables
DOCKER_USER=${USER}
DOCKER_COMPOSE_VERSION=v2.5.0
#


# OS 체크
OS_CHECK="$(cat /proc/version)"
if [[ "${OS_CHECK}" =~ "ubuntu" ]] || [[ "${OS_CHECK}" =~ "Ubuntu" ]]; then
    # 1. Install dependencies
    sudo apt-get update && sudo apt-get install -y \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg \
      lsb-release
    echo -e "1. Install dependencies\n"

    # 2. Add Docker’s official GPG key
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    echo -e "Add Docker's official GPG Key\n"

    # 3. Set up the stable repository
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    echo -e "3. Set up the stable repository"

    # 4. Install Docker CE
    sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    echo -e "4. Install Docker CE\n"

    # 5. Use Docker without root
    sudo usermod -aG docker ${DOCKER_USER}
    echo -e "5. Use Docker without root\n"

    # 6. Download and install
    sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    echo -e "6. Download and install\n"

    # 7. start docker service
    systemctl enable --now docker.service
    systemctl restart docker.service
    echo "7. start docker service"

elif [[ "${OS_CHECK}" =~ "centos" ]]; then
    # 1. Install dependencies
    sudo yum -y install yum-utils
    echo -e "1. Install dependencies\n"

    # 2. Set up the docker repository
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    echo -e "2. Set up the docker repository\n"

    # 3. Install docker ce
    sudo yum -y install docker-ce docker-ce-cli containerd.io
    echo -e "3. Install docker ce\n"

    # 4. restart docker.service
    sudo systemctl enable --now docker.service
    sudo systemctl restart docker.service
    echo -e "4. restart docker.service\n"

    # 5. Added docker group
    sudo usermod -aG docker ${USER}
    echo -e "5. Added docker group\n"
else 
    echo "check OS version is ubuntu or centos"
fi

2. 스크립트에 실행 권한 부여하고 실행

sudo chmod u+x ./install-docker.sh
bash install-docker.sh

▶︎ 폐쇄망인 경우?

도커를 서버에 설치해야 하는데, 폐쇄망이라 네트워크 사용이 불가능하다면 도커를 사용할 수 있는 방법은 없는걸까?
폐쇄망의 경우에는 도커를 실행할 수 있는 바이너리 파일들을 USB 같은 이동식 디스크에 미리 설치하여 서버로 옮기면 된다.


참고로 아래 설치 과정은 Ubuntu,CentOS 모두 동일한 과정으로 진행된다.


‣ 설치 방법

  • 위 링크에서 필요한 바이너리 파일들을 서버에 옮겨놓은 상태이어야 한다.

1. 도커 파일이 이미 존재하기에 파일을 옮기고 도커를 실행하는 명령어 사용

echo "Setting docker withoput internet ..."
cp -R ~/Downloads/docker-18.09.0.tgz ${HOME}
cd ${HOME}
tar -xzf docker-18.09.0.tgz
sudo cp -R docker/* /usr/bin
sudo dockerd &
echo "Docker setting complete!"

폐쇄망에서 도커를 실행하기 위해서는 기존에 사용하던 servicesystemctl 명령어 대신 dockerd & 명령을 통하여 도커를 실행시켜야 한다.


2. 이어서 도커 컴포즈또한 다운로드된 파일이 있기 때문에 cp 명령어로 복사 해주자.

echo "Setting docker-compose..."
cd $HOME
sudo cp -R docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
echo "docker-compose download complete!"

▶︎ 도커 삭제

설치한 도커 관련 패키지 삭제

sudo apt-get purge -y docker-engine docker docker.io docker-ce && \
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce

시스템 내에 남아있는 모든 도커 이미지 및 컨테이너 볼륨 삭제

sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /usr/bin/docker && sudo rm -rf /usr/bin/docker-compose

Loading script...