본문 바로가기
AyoProject/DevOps

[DevOps] 2. 서버에 Docker 환경 구성하기

by 청양호박이 2022. 4. 3.

사실 Docker는 오래전부터 사용되었던 기술이였고, 여러곳에서 개념에 대해서 정의를 했습니다. 새로 해당 개념을 정리하기 보다, 기존에 정의된 개념을 한번쭉 훑어보겠습니다.

 

RedHat
IT 소프트웨어인 "Docker"는 Linux® 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술입니다.
AWS
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.
위키백과
도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 

 

자 그렇다면 세부적인 설명은 거두절미하고 wsl로 구성한 Ubuntu server에 Docker를 설치해 보도록 하겠습니다. 

 

 

1. Docker를 서버에 설치하기


역시 해당 플랫폼을 제공하는 docker로 들어가서 설명을 보면서 구성하는게 가장 빠르고 정확한 방법이겠죠?? 
https://docs.docker.com/

 

Docker Documentation

 

docs.docker.com

Guides > Get Docker 로 들어가보면 Docker for Linux가 있는데 해당 메뉴를 선택합니다.

선택하면 [Install Docker Engine] 메뉴로 들어가게되고 지원하는 Server목록을 확인할 수 있습니다. 저는 이번에 Ubuntu-20.04를 설치했기 때문에, x86_64 / amd64의 Ubuntu를 선택하겠습니다. 간단하게 (v)아이콘을 선택하면 [Install Docker Engine on Ubuntu] 메뉴로 자동으로 이동합니다.

 

 

2. Docker를 Ubuntu 서버에 설치하기 (Install using the repository)


현재 repository를 통해서 제공되는 Ubuntu server의 버전은 Ubuntu Impish 21.10, Ubuntu Hirsute 21.04, Ubuntu Focal 20.04 (LTS), Ubuntu Bionic 18.04 (LTS) 입니다. 참고로 Ubuntu 16.04 LTS “Xenial Xerus” 는 지원이 종료되었고 OS의 업데이트를 추천하고 있습니다.

(1) Docker의 이전 버전의 이름은 docker, docker.io, docker-engine 이었고 삭제를 해야 합니다.

$ sudo apt-get remove docker docker-engine docker.io containerd runc

 

(2) repository를 설정합니다.

apt package를 우선 업데이트 하고 https에서 repository에 접근을 허용하기 위해서 관련 패키지를 설치합니다.

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

이미 다 신규 버전으로 설치가 되어있습니다. 다음으로는 Docker의 GPG key를 추가해 줍니다. 

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

마지막으로 stable repository를 설정해줍니다. 

$  echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

이렇게 설정이 완료되었습니다. 

(3) Docker Engine 설치

가장 최신에 update된 Docker Engine은 아래의 명령으로 설치가 완료됩니다. 하지만 특정 버전을 설치하기 위해서는 그 아래의 방법으로 수행해야 합니다.

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

여기서 Package docker-ce is not available, but is referred to by another package. 라는 메시지가 발생하는 경우가 있는데 이는 apt-get update를 무시하고 진행할 경우입니다. 제대로 동작하면 아래와 같이 continue할 것인지를 물어봅니다.

Y를 누르면 아래와 같이 쭉 설치가 진행됩니다.

[특정버전 설치하기]

 

우선 repository에 어떤 가능한 버전이 있는지 확인하고, 해당버전을 선택하여 설치를 진행합니다.

$ apt-cache madison docker-ce
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

제일 위에 있는 것을 예로 들어서 보면, <VERSION_STRING> 에는 5:20.10.14~3-0~ubuntu-focal 를 넣어주면 됩니다. 
 
마지막으로 Docker Engine이 정상적으로 설치되어 동작하는지 확인해 보겠습니다. 우선 docker가 서비스 중인지 확인하고, docker의 버전을 확인 후 docker를 실행합니다. 그리고 hello-world라는 기본 제공 정상설치 확인용 image를 run 해보겠습니다. 

$ service docker status (당연히 설치 직후에는 구동이 되어있지 않습니다.)
$ docder -v (docker의 설치버전을 확인합니다.)
$ sudo service docker start (docker 서비스의 시작은 root권한이 필요합니다.)
$ sudo docker run hello-world (docker image의 run도 역시 root권한이 필요합니다.)

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

이렇게 정상적으로 설치가 되었음을 확인했습니다.

 



 

3. Docker 다운받아 Ubuntu 서버에 설치하기


repository를 사용하지 못하는 환경이 있을 수 있습니다. 예를들어서 고객사의 폐쇠망으로 apt-get이 불가능한 경우가 대표적인 상황입니다. 이런경우는 Docker파일을 직접 다운받아서 파일을 옮기고 설치를 해야 합니다.

https://download.docker.com/linux/ubuntu/dists/

 

Index of linux/ubuntu/dists/

 

download.docker.com

접속하고 본인의 Ubuntu 버전을 선택하고 pool/stable/ 로 들어가서 amd64를 선택합니다. 그렇게 되면 .deb파일을 받게 되고 해당 파일을 서버로 올려줍니다.

이때 3개 파일을 받아야 하겠죠?? 그리고 아래 명령으로 해당 폴더로 이동하여 각각 dpkg해줍니다. 

$ sudo dpkg -i /path/to/package.deb

그리고 마지막으로 확인용 image를 run해줍니다.

$ sudo docker run hello-world



4. Docker 삭제하기


삭제는 해당 패키지를 purge하고 관련 폴더를 삭제만 해주면 됩니다.

$ sudo apt-get purge docker-ce docker-ce-cli containerd.io
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

이렇게 Docker에 대한 서버구성도 마무리 되었습니다. 

 

- Ayotera Lab -

댓글