■ 개요
- Docker Engine : 개별 컨테이너를 생성하고 실행하는 기본적인 도구
- Docker Compose : 여러 컨테이너를 하나의 서비스로 정의하고 관리하기 위한 도구
- OS 요구 사항
. Docker Engine을 설치하려면 다음 Ubuntu 버전 중 하나의 64비트 버전이 필요
+ 우분투 퀘스팅 25.10
+ 우분투 플러키 25.04
+ 우분투 노블 24.04(LTS)
+ 우분투 Jammy 22.04(LTS)
※ Ubuntu용 Docker Engine은 x86_64(또는 amd64), armhf, arm64, s390x, ppc64le(ppc64el) 아키텍처와 호환
- 방화벽 제한 사항
. ufw 또는 firewalld를 사용하여 방화벽 설정을 관리하는 경우, Docker를 사용하여 컨테이너 포트를 노출하면 해당 포트가 방화벽 규칙을 우회
. 도커는 iptables-nft 와 iptables-legacy 와만 호환 됨.
■ 사전작업
#01. 이전 버젼 제거
- Linux 배포판에서 제공하는 비공식 Docker 패키지는 Docker에서 제공하는 공식 패키지와 충돌할 수 있기 때문에, Docker Engine 공식 버전을 설치하기 전에 이러한 패키지를 제거해야 함
- 제거해야 할 비공식 패키지는 다음과 같습니다.
. docker.io
. docker-compose
. docker-compose-v2
. docker-doc
. podman-docker
또한 Docker Engine은 containerd 와 runc 에 종속됨. Docker Engine과 함께 제공되는 버전과의 충돌을 방지하기 위해 containerd와 runc룰 제거 해야 함
CMD] sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
CMD] sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
CMD] sudo rm -rf /var/lib/docker
CMD] sudo rm -rf /var/lib/containerd
CMD] sudo rm /etc/apt/sources.list.d/docker.sources
CMD] sudo rm /etc/apt/keyrings/docker.asc
■ 작업순서
# step01. Docker apt저장소를 설정
# Add Docker's official GPG key:
CMD] sudo apt update
CMD] sudo apt install ca-certificates curl
CMD] sudo install -m 0755 -d /etc/apt/keyrings
CMD] sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
CMD] sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
CMD] sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
CMD] sudo apt update

# step02. Docker Engine 패키지 설치
# 최신 버젼 설치
CMD] sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 설치 가능한 버젼 확인
CMD] apt list --all-versions docker-ce
-----------------Example----------
docker-ce/noble 5:29.0.4-1~ubuntu.24.04~noble <arch>
docker-ce/noble 5:29.0.3-1~ubuntu.24.04~noble <arch>
...
-----------------Example----------END
# 원하는 버젼 선택/설치
CMD] VERSION_STRING=5:29.0.4-1~ubuntu.24.04~noble
CMD] sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
# step03. Docker Engine 서비스 상태 확인
CMD] sudo systemctl daemon-reload
CMD] sudo systemctl enable --now docker
CMD] sudo systemctl status docker
# 이미지 를 실행하여 설치가 성공적으로 완료되었는지 확인하세요
CMD] sudo docker --version
CMD] sudo docker run hello-world
# step04. Docker Compose 바이너리 다운로드 및 실행 설정
CMD] sudo curl -L "https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
CMD] sudo chmod +x /usr/local/bin/docker-compose
CMD] sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
CMD] sudo docker-compose -v


# step05. Docker Compose 실행 샘플
CMD] sudo mkdir -p /app/docker/composetest
CMD] sudo chown -R uenter:uenters -R /app/docker
CMD] cd /app/docker/composetest
CMD] vi app.py
--------------ADD---------------
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return f'Hello World! I have been seen {count} times.\n'
--------------ADD---------------END
CMD] vi requirements.txt
--------------ADD---------------
flask
redis
--------------ADD---------------END
CMD] vi Dockerfile
--------------ADD---------------
# syntax=docker/dockerfile:1
FROM python:3.10-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run", "--debug"]
--------------ADD---------------END
CMD] vi compose.yaml
--------------ADD---------------
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"
--------------ADD---------------END
CMD] sudo docker compose up
CMD] curl -v http://localhost:8000
CMD] docker image ls
CMD] cd /app/docker/composetest
CMD] sudo docker compose down






'Linux > Ubuntu' 카테고리의 다른 글
| [OpenSearch/v3.3.2] 오픈서치(OpenSearch) 도커(docker) 버젼 설치 (0) | 2025.12.01 |
|---|---|
| [Ubuntu/v24.04.3 LTS] DNS 설정 (0) | 2025.11.29 |
| [Ubuntu/v24.04.3 LTS] 네트워크 설정 (0) | 2025.11.27 |
| [Ubuntu/v24.04.3 LTS] 방화벽 설정 (0) | 2025.11.26 |
| [Ubuntu/v24.04.3 LTS] Docker Desktop 설치 (0) | 2025.11.26 |