리눅스로 한 학기 살기 프로젝트-5

ashcircle·2025년 5월 6일
post-thumbnail

docker

도커(docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

도커 홈페이지에서는 다음과 같이 설명한다.

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

도커는 컴퓨터에서 실행할 수 있는 가상 컨테이너에 애플리케이션과 종속성을 패키징할 수 있다.
리눅스에서 실행할 때 도커는 리눅스 커널의 리소스 격리 기능(cgroup, kernel namespace)과 유니온 가능 파일 시스템(overlayFS)을 사용하여 컨테이너가 단일 리눅스 인스턴스 내에서 실행되도록 하여 가상 머신을 시작하고 유지 관리하는 부담을 없애준다.

구성요소

소프트웨어: 도커 데몬(dockerd)은 컨테이너를 관리하고 컨테이너 객체를 처리하는 프로세스다. 도커 클라이언트 프로그램(docker)는 CLI를 제공해 도커 데몬과 사용자가 상호작용할 수 있게 한다.

객체: 도커 객체는 도커에서 애플리케이션을 구성하는데 사용되는 다양한 객체다. 도커 객체의 주요 클래스는 이미지, 컨테이너, 서비스가 있다.

  • 도커 컨테이너는 애플리케이션을 실행하는 표준화되고 캡슐화된 환경이다. 컨테이너는 도커 API나 CLI를 사용하여 관리된다.
  • 도커 이미지는 컨테이너를 빌드하는데 사용되는 읽기 전용 템플릿이다. 이미지는 애플리케이션을 저장하고 전송하는데 사용된다.
  • 도커 서비스를 사용하면 컨테이너를 여러 도커 데몬에 걸쳐 확장할 수 있다. 이를 통해 도커 API를 통해 통신하는 협력 데몬 세트인 스웜이 생성된다.

레지스트리: 도커 레지스트리는 도커 이미지 저장소다. 클라이언트는 레지스트리에 연결하여 사용할 이미지를 다운로드하거나 빌드한 이미지를 업로드 할 수 있다. 레지스트리는 공개 또는 비공개로 설정할 수 있다. 주요 공개 레지스트리는 docker hub다.

설치

패키지 목록 업데이트

sudo apt update
sudo apt upgrade -y

필수 패키지 설치

sudo apt install ca-certificates curl gnupg lsb-release -y

도커 공식 GPG키 추가

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

도커 APT 저장소 등록

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

패키지 목록 재업데이트

sudo apt update

도커 엔진 및 관련 패키지 설치

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

도커 서비스 시작 및 부팅 시 자동 실행 설정

sudo systemctl start docker
sudo systemctl enable docker

도커 설치 확인

sudo docker run hello-world

sudo 없이 도커 명령어 실행

sudo usermod -aG docker $USER

도커 설치 확인 모습이다.

다음과 같이 컨테이너를 생성했고, 그 안에서 명령어로 실행 할 수 있는 모습니다.

profile
안녕하세요 코린이입니다.

0개의 댓글