본문 바로가기

Docker

Docker 개념 및 설치 과정

1. Docker란?

Docker는 어플리케이션을 표준화된 유닛(컨테이너) 안에 격리하여 배포하고 실행할 수 있도록 해주는 플랫폼이다. 기존의 가상머신과 달리, Docker 컨테이너는 운영체제를 포함하지 않으며, 애플리케이션과 필요한 라이브러리만 포함하여 경량화되어 있다. 이를 통해 빠른 배포, 효율적인 리소스 사용, 그리고 높은 이식성을 제공해준다.

 

주요 특징

경량화: 컨테이너는 OS 전체를 포함하지 않기 때문에 자원 사용이 적음

이식성: 컨테이너는 어디서나 동일하게 동작하며, 개발 환경과 운영 환경의 차이를 줄일 수 있음

효율적인 자원 관리: 필요한 라이브러리와 애플리케이션만 포함되어 있어, 운영 효율성을 높임

빠른 배포와 테스트: 이미지 기반으로 환경을 재현할 수 있어 테스트와 배포가 용이함

 

사용 이유

회사에서 많이 사용하는 환경 구성 방식

네이버, 티맥스 등은 Docker 기반의 클라우드 시스템을 운영하며, Kubernetes를 활용하여 대규모 컨테이너 관리

2. Docker 아키텍처

Docker 엔진: Docker의 핵심 컴포넌트로, 다음과 같은 기능을 포함

-도커 데몬(Docker Daemon): 컨테이너 및 이미지의 생성, 관리, 삭제를 담당

-도커 클라이언트(Docker Client): docker 명령어를 통해 Docker 데몬과 통신

-도커 레지스트리(Docker Registry): Docker 이미지를 저장하고 관리하는 곳 (e.g., Docker Hub)

 

컨테이너(Container): 하나의 애플리케이션과 관련된 라이브러리, 설정 파일을 포함하여 독립적으로 실행할 수 있는 환경.

이미지(Image): 컨테이너를 실행하기 위한 기본 템플릿으로, 특정 애플리케이션 환경을 설정한 상태를 저장한 파일.

 

3. Docker 설치

Ubuntu 환경에서 Docker 설치

# 기존 Docker 관련 패키지 제거
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# 설치에 필요한 패키지 설치
sudo apt-get update
sudo apt-get install -y ca-certificates curl

# Docker의 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Docker 저장소 추가
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 설치 확인
sudo docker ps

 

Docker 권한 설정

# Docker 그룹 생성 및 사용자 추가
sudo groupadd docker
sudo usermod -aG docker $USER

# Docker 서비스 재시작 및 활성화
sudo service docker restart
sudo systemctl enable docker.service

 

4. Docker 명령어

1) 기본 명령어

 

도커 버전 확인

$ docker version

 

도커 시스템 정보 확인

$ docker system info

 

실행 중인 컨테이너 목록 보기

$ docker ps

 

모든 컨테이너 목록 보기

$ docker ps -a​

 

컨테이너 상태 확인

$ docker container stats [컨테이너 이름/ID]

 

2) 이미지 관련 명령어

 

이미지 목록 보기

$ docker images

 

이미지 다운로드

$ docker pull [이미지 이름:태그]
# 예: docker pull ubuntu:20.04

 

이미지 삭제

$ docker rmi [이미지 이름:태그]

 

이미지 상세 정보 확인

$ docker image inspect [이미지 이름:태그]

 

3) 컨테이너 관련 명령어

 

컨테이너 실행

$ docker run --name [컨테이너 이름] -d [이미지 이름:태그]
# 예: docker run --name webserver -d -p 8080:80 nginx

 

컨테이너 중지 및 시작

$ docker container stop [컨테이너 이름/ID]
$ docker container start [컨테이너 이름/ID]

 

컨테이너 삭제

$ docker rm [컨테이너 이름/ID]

 

모든 종료된 컨테이너 삭제

$ docker container prune​

 

Docker Hub 사용 명령어

이미지 푸시 및 태그 설정

$ docker login
$ docker tag [이미지 이름:태그] [Docker Hub 사용자 이름]/[이미지 이름]:[태그]
# 예: docker tag nginx:latest myusername/webserver:1.0
$ docker push [Docker Hub 사용자 이름]/[이미지 이름]:[태그]

 

4) Docker 실습 예제

 

간단한 Nginx 웹서버 실행

Nginx 웹서버가 8080 포트에서 동작하도록 설정

$ docker run --name mynginx -d -p 8080:80 nginx

 

MariaDB 데이터베이스 컨테이너 실행

-e 옵션을 사용하여 환경 변수를 설정하고 MariaDB 실행

$ docker run --name mydb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb

 

컨테이너 삭제 및 정리

$ docker stop mynginx mydb
$ docker rm mynginx mydb

[오류 및 해결]

 

도커 데몬 권한 오류

$ sudo chmod 777 /var/run/docker.sock

 

이미 사용 중인 포트 오류

다른 포트를 사용하여 실행

$ docker run --name mynginx -d -p 8888:80 nginx

 

'Docker' 카테고리의 다른 글

Docker Compose 설치 및 사용법  (1) 2024.10.17
Docker 컨테이너 생성 및 구동  (2) 2024.10.04