Post

[Docker] 가상머신에서 도커 설치와 실행

📌 들어가며

이번 글에서는 도커를 직접 설치하고 실행하는 전 과정을 정리한다. Ubuntu·CentOS 설치부터 컨테이너 실행·관리 명령어, 웹 서버·DB 컨테이너 띄우기, 그리고 GUI 관리 도구 Portainer까지 실습한다.

시작 전 요구 사항 — 리눅스 커널 3.10 이상, 64비트(x86_64) 아키텍처가 필요하다.


1. 도커 설치

Ubuntu

1
2
3
4
5
6
7
8
9
10
11
sudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# Docker 공식 GPG 키 + 저장소 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt -y install docker-ce
sudo usermod -aG docker $USER        # 사용자를 docker 그룹에 등록
sudo systemctl enable --now docker

CentOS

1
2
3
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce && yum -y update
systemctl enable --now docker

간편 설치 (스크립트)

1
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh

💡 sudo usermod -aG docker $USER로 사용자를 docker 그룹에 등록하면, 매번 sudo 없이 도커 명령을 쓸 수 있다(적용하려면 재로그인 필요).


2. 컨테이너 실행 & 관리 명령어

이미지를 가져와(pull) 컨테이너로 실행(run)한다.

1
2
3
docker info                                # 설치 정보 확인
docker pull ubuntu:16.04                    # 이미지 가져오기
docker run [옵션] [이미지]:[태그] [명령어]     # 컨테이너 실행

run 주요 옵션:

옵션의미
-it인터랙티브 터미널 연결
--name컨테이너 이름 지정
-d백그라운드(detached) 실행
-p호스트:컨테이너 포트 연결

컨테이너 관리:

명령역할
docker ps / ps -a실행 중 / 전체 컨테이너 목록
docker start/stop/restart시작 / 중지 / 재시작
docker rm컨테이너 삭제
docker exec -it <컨테이너> <명령>실행 중 컨테이너에 명령 실행
docker images로컬 이미지 목록

3. 웹 서버 컨테이너 실행

Nginx 이미지를 받아 호스트 8001 → 컨테이너 80으로 연결해 실행한다.

1
2
3
docker pull nginx:1.25.0-alpine
docker run -d -p 8001:80 --name=my-webserver1 nginx:1.25.0-alpine
curl localhost:8001                          # 접속 확인

💡 -p 8001:80호스트의 8001 포트로 온 요청을 컨테이너의 80 포트로 전달한다는 뜻이다. 이 포트 매핑이 있어야 외부에서 컨테이너 안의 서비스에 접근할 수 있다.


4. 파일 변경 & 커스텀 이미지 생성

호스트 파일을 컨테이너로 복사하거나, Dockerfile로 이미지를 빌드한다.

1
2
3
4
5
6
# 호스트 → 컨테이너 파일 복사
docker cp index.html my-webserver1:/usr/share/nginx/html/index.html

# Dockerfile 기반 이미지 빌드 & 실행
docker build -t myweb:v1.0 .
docker run -d -p 8002:80 --name=my-webserver2 myweb:v1.0

5. DB 컨테이너 & Portainer

MySQL 컨테이너 — 환경 변수(-e)로 루트 비밀번호를 설정한다.

1
2
3
docker pull mysql:5.7-debian
docker run -it -e MYSQL_ROOT_PASSWORD=pass123# mysql:5.7-debian /bin/bash
docker exec -it <컨테이너> /bin/bash          # 접속해 DB 관리

Portainer — 컨테이너를 웹 GUI로 관리하는 도구.

1
2
3
4
5
6
docker pull portainer/portainer-ce
docker volume create portainer_data
docker run -d -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data --restart=always portainer/portainer-ce
# 브라우저에서 서버IP:9000 접속

💡 Portainer 실행 시 /var/run/docker.sock을 마운트하는 이유는, 컨테이너 안의 Portainer가 호스트의 도커 엔진을 제어하기 위해서다. 이 소켓이 도커 데몬과 통신하는 창구다.


📝 정리

1
2
3
4
5
6
도커 설치 & 실행
├─ 설치   apt/yum 저장소 또는 get.docker.com 스크립트
├─ 실행   pull → run (-it/-d/-p/--name)
├─ 관리   ps / start·stop / exec / rm
├─ 서비스 nginx(-p 8001:80), mysql(-e 비밀번호)
└─ 관리툴 Portainer(docker.sock 마운트)
명령역할
run -d -p백그라운드 + 포트 매핑 실행
exec -it실행 중 컨테이너 접속
docker cp호스트 ↔ 컨테이너 파일 복사

도커 실행의 핵심은 pull → run포트 매핑(-p)이다. 이 기본기를 잡으면 웹 서버·DB 등 어떤 서비스든 컨테이너로 띄울 수 있고, Portainer로 이들을 시각적으로 관리할 수 있다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.