도커 개념

도커(Docker)는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 패키지화하고 배포하는 데 사용됩니다.
도커는 리눅스 컨테이너 기술을 기반으로 하며, 애플리케이션을 실행하는 환경을 컨테이너 안에 격리시켜 이식성이 뛰어나고 확장성이 좋은 솔루션을 제공합니다.

 

도커 구성 요소

  • 이미지(Image)
    • 도커 컨테이너를 만들기 위한 실행 가능한 패키지입니다.
    • 이미지는 애플리케이션 코드, 런타임, 시스템 도구, 라이브러리 등을 포함하며, 컨테이너를 실행하는 데 필요한 모든 것을 갖추고 있습니다.
    • 이미지는 컨테이너의 기반이 됩니다.
  • 컨테이너(Container)
    • 이미지의 인스턴스로, 실행 중인 애플리케이션을 포함하는 격리된 환경입니다.
    • 컨테이너는 호스트 시스템과는 독립적으로 실행되며, 특정 환경에서 일관된 동작을 보장합니다.
  • 도커 데몬(Docker Daemon)
    • 도커를 관리하고 컨테이너를 생성, 실행, 관리하는 백그라운드 프로세스입니다.
    • 도커 데몬은 컨테이너의 라이프사이클을 관리하고 도커 API를 통해 클라이언트 요청을 처리합니다.
  • 도커 클라이언트(Docker Client)
    • 사용자가 도커를 커맨드 라인이나 GUI를 통해 상호 작용할 수 있게 해주는 인터페이스입니다.
    • 도커 클라이언트는 도커 데몬과 통신하여 작업을 수행합니다.
  • 도커 허브(Docker Hub)
    • 도커 이미지를 저장하고 관리하는 온라인 레지스트리입니다.
    • 도커 허브에서는 다른 사용자가 만든 이미지를 공유하고, 자신이 만든 이미지를 업로드하여 공유할 수 있습니다.

 

도커 설치 스크립트

#!/bin/bash


# Docker 설치 스크립트
# CentOS 7.9에서 Docker를 자동으로 설치하고 설정하는 스크립트입니다.


# 1. 기존 Docker 제거 (선택사항)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine


# 2. 필요한 패키지 설치
sudo yum install -y yum-utils device-mapper-persistent-data lvm2


# 3. Docker 저장소 추가
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


# 4. Docker 엔진 설치
sudo yum install -y docker-ce docker-ce-cli containerd.io


# 5. Docker 서비스 시작
sudo systemctl start docker


# 6. 부팅 시 자동 시작 설정
sudo systemctl enable docker


# 7. 현재 사용자를 Docker 그룹에 추가 (재시작 필요)
sudo usermod -aG docker $USER


# 8. 재로그인 또는 그룹 변경 적용
newgrp docker


# 9. Docker 버전 확인
docker --version


# 10. Docker 컨테이너 실행 테스트
docker run hello-world


# 설치 및 설정 완료 메시지
echo "Docker 설치 및 설정이 완료되었습니다."

 

docker run hello-world 결과

c1ec31eb5944: Pull complete
Digest: sha256:ac69084025c660510933cca701f615283cdbb3aa0963188770b54c31c8962493
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/