
도커로 서비스 운영하다 보면 데이터를 어떻게 보존할지, 그리고 컨테이너를 어떻게 커스텀 이미지로 남길지가 핵심 포인트가 된다.
여기서는 두 가지를 정리한다.
Docker Volume은 컨테이너와 호스트 머신 사이에서 데이터를 공유하기 위한 기능이다.
이를 통해:
즉, “컨테이너는 일회용, 데이터는 살아남게” 만들어 주는 도구가 Volume이다.
데이터 영속성 유지
개발 환경 유연성
여러 컨테이너 간 데이터 공유
Bind mount
-v /host/path:/container/path 형식.Volume
docker volume create mysql_data
docker run -d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-v mysql_data:/var/lib/mysql \
--name mysql-container \
mysql:latest
-v mysql_data:/var/lib/mysql
mysql_data 볼륨을 MySQL 데이터 디렉터리에 연결docker exec -it mysql-container mysql -u root -p
MySQL 내부에서:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
SELECT * FROM users;
컨테이너 삭제:
docker rm -f mysql-container
동일한 Volume을 다시 마운트해서 컨테이너 생성:
docker run -d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-v mysql_data:/var/lib/mysql \
--name mysql-container \
mysql:latest
다시 접속해서 데이터 확인:
docker exec -it mysql-container mysql -u root -p
USE testdb;
SELECT * FROM users;
여기서 데이터가 그대로 남아 있으면, Volume이 데이터 영속성을 보장해 준 것.
docker volume ls
docker volume inspect mysql_data
docker volume rm mysql_data
docker volume prune
컨테이너를 띄운 뒤 추가로 세팅을 하고, 그 상태를 새로운 이미지로 저장하는 작업을 말한다.
예를 들면:
curl, git 등 필요한 패키지를 설치이렇게 하면 팀/프로젝트에서 공통으로 사용할 “표준 베이스 이미지”를 쉽게 만들 수 있다.
curl 설치 후 이미지로 저장docker run -it --name myubuntu ubuntu bash
--name myubuntu : 컨테이너 이름을 myubuntu로 지정-it : 인터랙티브 모드 + 터미널 연결curl 설치컨테이너 안에서:
apt update && apt install -y curl
apt update : 패키지 목록 갱신apt install -y curl : curl 설치curl --version
컨테이너 밖(호스트)에서:
docker commit myubuntu ubuntu-with-curl
myubuntu 컨테이너를 기반으로ubuntu-with-curl 이라는 새 이미지를 생성이제부터는 ubuntu-with-curl 이미지를 사용하면 매번 curl 설치 과정을 반복할 필요가 없다.
docker run -it ubuntu-with-curl bash
새 컨테이너 안에서:
curl http://example.com
curl이 정상적으로 동작하는 것.Docker Volume
docker volume create/ls/inspect/rm/prune 로 관리컨테이너 개조(Container Modification)
docker commit 으로 새 이미지를 만들어 재사용이 두 가지를 익혀두면 데이터를 안전하게 관리하고, 반복 가능한 환경을 표준화하는데 유용하게 쓸 수 있다.