⭐ Docker 설치
Azure에서 생성한 Ubuntu 22.04 VM에 SSH로 접속한 후, 터미널 환경에서 Docker 설치를 진행하였다.
Docker 설치 과정은 Docker 공식 문서에서 제공하는 Ubuntu용 설치 명령어를 참고하여 순서대로 수행하였다.
1) 패키지 목록을 최신 상태로 갱신하고, Docker 저장소에 안전하게 접근하기 위한 기본 패키지를 설치한다.
sudo apt update
sudo apt install ca-certificates curl
2) apt가 Docker 패키지의 무결성을 검증할 수 있도록, 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
3) Docker 공식 저장소를 Ubuntu 패키지 소스 목록에 추가한다.
현재 Ubuntu 버전 코드명과 시스템 아키텍처를 자동으로 반영하도록 작성되어 있다.
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
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
4) 새로 추가한 Docker 저장소의 패키지 정보를 반영하기 위해 다시 업데이트하고, 필요한 플러그인을 설치한다.
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
설치되는 패키지
- docker-ce: Docker Engine 본체
- docker-ce-cli: docker 명령어를 사용하기 위한 CLI
- containerd.io: 컨테이너 런타임
- docker-buildx-plugin: 멀티 플랫폼 이미지 빌드 도구
- docker-compose-plugin: 여러 컨테이너를 한 번에 관리하는 Compose 도구
5) hello-world 이미지를 실행하여 Docker가 정상적으로 설치되었는지 확인한다.
sudo docker run hello-world
⭐ sudo 없이 Docker 사용하도록 권한 설정
설치 직후 docker ps를 입력하면 permission denied 오류가 발생한다.
Docker 데몬이 root 권한으로 실행되기 때문이다.
현재 사용자를 docker 그룹에 추가하면 매번 sudo를 붙이지 않아도 된다.
sudo groupadd docker # docker 그룹 생성 (이미 존재하면 메시지가 뜨지만 무시)
sudo usermod -aG docker $USER # 현재 사용자를 docker 그룹에 추가
newgrp docker # 현재 터미널 세션에 즉시 적용
이후 docker ps를 입력했을 때 오류 없이 목록이 출력된다.
⭐ 기본 명령어 실습
pull → run → exec → logs → stop → rm 순서로 컨테이너 생명주기를 실습한다.
이미지 받기 / 컨테이너 실행
# Ubuntu 18.04 이미지를 Docker Hub에서 내려받기
docker pull ubuntu:18.04
# demo1: bash 터미널에 바로 접속 (프롬프트가 root@컨테이너ID:/# 로 바뀌면 컨테이너 내부에 들어온 것)
docker run -it --name demo1 ubuntu:18.04 /bin/bash
exit # 컨테이너에서 빠져나오기 (Ctrl+D도 가능)
# demo2: 백그라운드 모드로 실행
docker run -it -d --name demo2 ubuntu:18.04
❕ -it vs -d 옵션 ❕
-it: 컨테이너 실행과 동시에 터미널에 바로 접속한다. -i(interactive)와 -t(tty)의 조합이다.
-d: 백그라운드 모드. 터미널을 점유하지 않고 컨테이너가 계속 실행 상태를 유지한다.
컨테이너 목록 확인
docker ps # 현재 실행 중인 컨테이너만 표시
docker ps -a # 종료된 컨테이너까지 포함하여 전체 표시

실행 중인 컨테이너 접속 / 로그 확인
# 백그라운드로 실행 중인 demo2 컨테이너 내부로 접속
docker exec -it demo2 /bin/bash
# demo3: 1초마다 현재 시간을 출력하는 컨테이너 (로그 실습용)
docker run --name demo3 -d busybox sh -c "while true; do $(echo date); sleep 1; done"
docker logs demo3 # 현재까지 쌓인 로그 출력
docker logs demo3 -f # 실시간으로 계속 출력 (-f: follow)
컨테이너 정지 / 삭제 / 이미지 삭제
docker rm: 컨테이너를 삭제한다. 실행 중이라면 먼저 stop이 필요하다.
docker rmi: 이미지를 삭제한다. 해당 이미지로 생성된 컨테이너가 남아 있으면 삭제되지 않는다.
docker stop demo2
docker stop demo3
docker rm demo1
docker rm demo2
docker rm demo3
docker images # 로컬에 저장된 이미지 목록 확인
docker rmi ubuntu:18.04 # 이미지 삭제
⭐ Dockerfile로 이미지 빌드하기
Dockerfile을 작성하면 실행 환경을 코드로 정의할 수 있고, 누구든 동일한 이미지를 빌드할 수 있다.
1) 실습 폴더 및 Dockerfile을 생성한다.
mkdir docker-practice
cd docker-practice
touch Dockerfile
vi Dockerfile
2) Dockerfile을 작성한다.
vi에서 i를 눌러 입력 모드로 전환한 뒤 아래 내용을 작성하고, Esc → :wq로 저장 및 종료한다.
Dockerfile 주요 명령어
- FROM: 베이스 이미지를 지정한다. 모든 Dockerfile은 FROM으로 시작한다.
- RUN: 이미지 빌드 과정에서 실행할 쉘 명령어다. 패키지 설치 등에 사용된다.
- CMD: 컨테이너가 실행될 때 기본으로 실행할 명령이다. docker run 시 덮어쓸 수 있다.
FROM ubuntu:18.04
RUN apt-get update
CMD ["echo", "Hello Docker"]
3) 이미지를 빌드하고 실행한다.
# 현재 디렉터리의 Dockerfile로 이미지 빌드 (마지막 .은 현재 위치를 빌드 컨텍스트로 사용)
docker build -t my-image:v1.0.0 .
docker images # 빌드된 이미지 확인
# 이미지 실행 → "Hello Docker" 출력
docker run my-image:v1.0.0


4) docker ps -a로 전체 컨테이너 목록을 확인한 뒤, NAMES 컬럼에 표시된 이름으로 컨테이너를 삭제한다.
docker ps -a # 실행 후 컨테이너 목록 확인
docker rm <컨테이너 이름>


'클라우드응용SW개발' 카테고리의 다른 글
| [Cloud] 12주차-2. Minikube + kubectl 실습 (0) | 2026.06.04 |
|---|---|
| [Cloud] 12주차-1. 쿠버네티스와 Minikube (0) | 2026.06.04 |
| [Cloud] 11주차-1. 컨테이너 기술과 Docker의 이해 (0) | 2026.06.03 |
| [Cloud] 10주차-2. Azure Functions Blob Trigger로 위협 파일 감지 실습 (0) | 2026.06.03 |
| [Cloud] 10주차-1. Azure Functions 생성 실습 (Azure Portal & VS Code) (0) | 2026.06.03 |