Docker는 컨테이너(Container) 기반 가상화 플랫폼으로, 애플리케이션을 격리된 환경에서 실행할 수 있도록 해주는 도구이다. 도커를 통해 개발, 테스트, 배포 환경을 표준화할 수 있다.
실행 가능한 애플리케이션과 환경을 포함한 불변(Immutable)한 패키지
예제: ubuntu, nginx, python:3.9
이미지를 실행한 인스턴스로, 애플리케이션이 동작하는 격리된 환경
가상 머신(VM)보다 가볍고 빠름
Docker 이미지를 만들기 위한 설정 파일
FROM python:3.9
COPY app.py /app/
CMD ["python", "/app/app.py"]
여러 개의 컨테이너를 관리하는 도구
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
Docker 이미지를 저장하는 공간
예제: Docker Hub, AWS ECR, Google GCR
| Docker (컨테이너) | 가상 머신 (VM) | |
|---|---|---|
| 실행 방식 | 호스트 OS 위에서 격리된 컨테이너 실행 | OS 전체를 가상화하여 실행 |
| 속도 | 빠름 (초 단위 실행) | 느림 (분 단위 실행) |
| 용량 | 가벼움 (~MB 단위) | 무거움 (GB 단위) |
| 성능 | 적은 리소스로 다수의 컨테이너 실행 가능 | 리소스 소비 많음 |
| 사용 예시 | 마이크로서비스, CI/CD, 클라우드 배포 | 전통적인 서버 가상화 |
| 명령어 | 설명 |
|---|---|
docker pull <이미지> | Docker Hub에서 이미지 다운로드 |
docker run -d --name <컨테이너명> -p <호스트포트>:<컨테이너포트> <이미지> | 컨테이너 실행 (백그라운드) |
docker ps | 실행 중인 컨테이너 목록 확인 |
docker stop <컨테이너명> | 컨테이너 중지 |
docker rm <컨테이너명> | 컨테이너 삭제 |
docker images | 로컬에 있는 Docker 이미지 목록 확인 |
docker rmi <이미지> | Docker 이미지 삭제 |
docker exec -it <컨테이너명> bash | 실행 중인 컨테이너 내부로 접속 |
docker logs <컨테이너명> | 컨테이너 로그 확인 |
docker-compose up -d | docker-compose.yml 기반으로 컨테이너 실행 |
docker-compose down | docker-compose.yml 기반으로 실행된 컨테이너 중지 |
ubuntu@DESKTOP-SCOK45O:~$ whoami
ubuntu
ubuntu@DESKTOP-SCOK45O:~$ cat /etc/group | grep docker
docker:x:989:
ubuntu@DESKTOP-SCOK45O:~$ sudo usermod -aG docker $(whoami)
-aG 옵션은 기존 그룹을 유지하면서 docker 그룹을 추가하는 옵션
sudo groupadd docker
ubuntu@DESKTOP-SCOK45O:~$ newgrp docker
ubuntu@DESKTOP-SCOK45O:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6d66507f63c quay.io/minio/minio "/usr/bin/docker-ent…" 3 minutes ago Up 3 minutes 0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp minio
우분투 시스템 패키지 업데이트
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
Docker가 설치 확인
7-1 도커 실행상태 확인
sudo systemctl status docker
7-2 도커 실행
sudo docker run hello-world