티스토리 뷰
도커는 서버를 관리할려면 반드시 알아야 하는 필수 기술 중 하나이다.
그러나 막상 도커에 대한 들으면 "그냥 vm 하나 더 만들기 귀찮아서 쓰는 거임?", "버전 차이 때문에 문제가 발생하면, 그냥 해당 버전만 쓴다고 미리 명시해두면 되는 거아니야?" 라는 생각이 있었다.
한마디로 편하기는 한데, 이게 필수? 라는 마인드가 있었다.
그러나 도커에 대해서 자세히 알아보자, 서버 관리자의 스트레스의 원인을 미리 제거하는 아주 중요한 도구임을 알 수 있었다.
만약 도커가 없었다면, 이 세상 모든 서버 관리자는 탈모가 되거나 줄없는 번지 점프 선수가 되었을 것이라는 확신이 들었다.
솔직히 하루에 한번씩 도커를 만든 개발자에게 절을 하는 것이 아깝지 않을 정도이다.
잡설은 여기까지하고 오늘은 도커에 대해서 알아보자.
docker란?
Docker란 Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이다.
다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.
백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.
컨테이너
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술로, VM같은 가상화 기술의 하나지만 기존방식과는 차이가 있다.
VM과 같은 가상화는 주로 os를 가상화한다.
즉, pc 안에 새로운 pc를 새로 만드는 것이다.
이렇게 하면 실제 os와 같은 성능을 보여 줄 수 있지만,기존 pc의 메모리 등을 점유해야하기에 리소스가 많이 요구된다.
이렇게 되면 pc에 대한 부담이 증가하고, 다양한 환경을 구성하는 것에 제약이 있다.
그에 반에, 컨테이너는 이런 문제에 대한 완전한 해결책을 제시한다. 컨테이너도 주로 다양한 os 환경을 제공하지만, 이를 실제로 만들지 않는다.
간단히 말해, 하나의 pc안에 특정 os의 역할을 수행하는 프로세스를 만들고 이를 격리시켜서 사용하는 것이다.
이렇게 하면 리소스는 기존 pc와 공유하면서, 필요한 만큼만 사용하고, 기존 커널에서 컨테이너를 조작하는 것이 가능하다.
그런것에 비해, 가벼워 수많은 컨테이너를 만들어 다양한 환경을 구성하는 것이 가능하다.
실제로 거의 1~2초 정도면 하나의 컨테이너를 만들 수 있고, docker file이나 docker compose로 특정 환경을 구성하는 것도 1~2분내에 끝이 난다.
그냥 vm을 새로 만드는데도 10분이상 걸리는 기존과는 다르다.
도커 이미지
앞써 말한 가벼운 환경 구성도 도커의 장점이지만, 현재 도커를 사용하는 가장 큰 이유가 바로 도커 이미지이다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않는다.
기본적으로 도커는 이미지를 이용해 컨테이너를 생성한다.
컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장되며 같은 이미지에서 여러개의 컨테이너를 생성할 수 있다.
또한 이미지를 사용해 새로운 컨테이너를 만들때 os나 라이브러리가 업데이트 되어도 이를 반영하지 않는다.
즉, 이전 버전의 os나 라이브러리가 만들었던 당시의 버전 그대로 저장된다는 뜻이다.
별거 아닌 것처럼 보이지만, 이는 엔지니어의 수고를 크게 덜어준다.
예를 들어, 1년 간격으로 2개의 서버를 동일한 명령어로 만들었는데 뒤에 만는 서버만 오류가 나올 수 있다.
이는 os나 다른 종속 라이브러리의 업데이트로, 당시에는 가능한 기능이 현재는 사라지거나 변경되었을 때 발생할 수 있는 문제다.
그러나 이미지를 사용하면, 당시 사용했던 버전 그대로 저장되기에 1년이든 100년이든 관계없이 동일한 컨테이너를 생성 가능하다.
또한 자신 만든 이미지를 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있다.
설치법
우분투 패키지 업데이트
sudo apt-get update
필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
시스템 패키지 업데이트
sudo apt-get update
Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
도커 실행상태 확인
sudo systemctl status docker
도커 테스트 실행
sudo docker run hello-world
'tools > docker' 카테고리의 다른 글
도커 네트워크 (0) | 2024.02.05 |
---|---|
docker 명령어 (1) | 2024.01.31 |