728x90
<볼륨이란?>
- 볼륨: 도커 컨테이너 간에 데이터를 공유하고, 컨테이너의 파일 시스템이나 호스트 파일 시스템과 분리된 영역에 데이터를 저장하는 도커의 데이터 관리 기능
- <특징>
- 영속성(Persistence): 볼륨은 컨테이너가 삭제되더라도 데이터를 보존하므로, 데이터의 영속성을 제공
- 컨테이너 간 데이터 공유: 여러 컨테이너에서 동일한 볼륨을 사용하여 데이터를 공유
- 백업과 복원: 볼륨은 백업 및 복원이 쉽고, 데이터를 관리하기 용이
<Docker 실습 :: 볼륨>
- 볼륨 위치: /var/lib/docker/volumes
<볼륨 위치 확인> /var/lib/docker/volumes
ubuntu@host1:~/Labs/ch06$ sudo su -
[sudo] ubuntu 암호:
root@host1:~# cd /var/lib/docker/volumes
root@host1:/var/lib/docker/volumes# ls
3c6934ae8b00c0075ee164b4adf4db3efd685465b23936fbe61323800a1d100a backingFsBlockDev
5037ad84f479fac50914cb017c195a48592bb122348b30fc498e17b700b93526 metadata.db
7218ff99f0ef01950ab25d481f4e099e049adf6c750e5c76cd9bf9b797ed465c portainer_data
8144d9495439098a90a41e9e592acba434b5da7463d42ff6908c487ac3a99805
>> mydb-data 볼륨 생성이 안 된 것을 볼 수 있음
<mydb-data 볼륨 생성 및 확인>
- docker volume create (볼륨 이름)
root@host1:/var/lib/docker/volumes# docker volume create mydb-data
mydb-data
root@host1:/var/lib/docker/volumes# ls
3c6934ae8b00c0075ee164b4adf4db3efd685465b23936fbe61323800a1d100a backingFsBlockDev
5037ad84f479fac50914cb017c195a48592bb122348b30fc498e17b700b93526 metadata.db
**7218ff99f0ef01950ab25d481f4e099e049adf6c750e5c76cd9bf9b797ed465c mydb-data**
8144d9495439098a90a41e9e592acba434b5da7463d42ff6908c487ac3a99805 portainer_data
root@host1:/var/lib/docker/volumes# docker volume ls
DRIVER VOLUME NAME
local 3c6934ae8b00c0075ee164b4adf4db3efd685465b23936fbe61323800a1d100a
local 5037ad84f479fac50914cb017c195a48592bb122348b30fc498e17b700b93526
local 7218ff99f0ef01950ab25d481f4e099e049adf6c750e5c76cd9bf9b797ed465c
local 8144d9495439098a90a41e9e592acba434b5da7463d42ff6908c487ac3a99805
**local mydb-data**
local portainer_data
<mydb-data의 정보 상세 확인>
root@host1:/var/lib/docker/volumes# docker volume inspect mydb-data
[
{
"CreatedAt": "2024-01-17T11:40:32+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mydb-data/_data",
"Name": "mydb-data",
"Options": null,
"Scope": "local"
}
]
<컨테이너 생성 및 확인>
- -v mydb-data:/var/lib/mysql: 호스트 머신의 "mydb-data" 볼륨을 컨테이너 내의 "/var/lib/mysql" 경로에 마운트
- -e MYSQL_DATABASE=hangaram: "hangaram"이라는 이름의 MySQL 데이터베이스를 생성
ubuntu@host1:~/Labs/ch06$ docker container run -d --name=mydb -e MYSQL_ROOT_PASSWORD=password -e
MYSQL_DATABASE=hangaram -v mydb-data:/var/lib/mysql mysql:5.7-debian
7ccc6e59c56fa1fc1aec4a25fbef4314f8bbfb272c68aac286ba8edab2afa2d9
<mydb 컨테이너 실행 및 볼륨 마운트 확인>
- /dev/sdb2 47G 3.5G 43G 8% /var/lib/mysql 항목으로 마운트 확인 가능
ubuntu@host1:~/Labs/ch06$ docker container exec -it mydb bash
root@7ccc6e59c56f:/# df -ha
Filesystem Size Used Avail Use% Mounted on
overlay 47G 3.5G 43G 8% /
proc 0 0 0 - /proc
tmpfs 64M 0 64M 0% /dev
devpts 0 0 0 - /dev/pts
sysfs 0 0 0 - /sys
cgroup 0 0 0 - /sys/fs/cgroup
mqueue 0 0 0 - /dev/mqueue
shm 64M 0 64M 0% /dev/shm
/dev/sdb2 47G 3.5G 43G 8% /etc/resolv.conf
/dev/sdb2 47G 3.5G 43G 8% /etc/hostname
/dev/sdb2 47G 3.5G 43G 8% /etc/hosts
**/dev/sdb2 47G 3.5G 43G 8% /var/lib/mysql**
proc 0 0 0 - /proc/bus
proc 0 0 0 - /proc/fs
proc 0 0 0 - /proc/irq
proc 0 0 0 - /proc/sys
proc 0 0 0 - /proc/sysrq-trigger
tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs 64M 0 64M 0% /proc/kcore
tmpfs 64M 0 64M 0% /proc/keys
tmpfs 64M 0 64M 0% /proc/timer_list
tmpfs 2.0G 0 2.0G 0% /proc/scsi
tmpfs 2.0G 0 2.0G 0% /sys/firmware
<MYSQL로 hangaram 데이터베이스 생성 확인>
root@7ccc6e59c56f:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 4
Server version: 5.7.42 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| **hangaram** |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
<컨테이너 재 구동 후 진입>
ubuntu@host1:~/Labs/ch06$ docker container run -d --name=mydb -e MYSQL_ROOT_PASSWORD=password -v mydb-data:/var/lib/mysql mysql:5.7-debian
da61b58cd4a8a3bd768ef4fe7f0777d5c49853dcd7242560a539e6ef00190294
ubuntu@host1:~/Labs/ch06$ docker container exec -t mydb bash
>> root@da61b58cd4a8:/# df -ha 과 show databases; 명령 사용시,
마운트 확인 가능 및 전에 생성한 데이터베이스 hangaram이 있는 것을 확인할 수 있음
>> 데이터의 영속성(데이터 보존) 확인 가능
<데이터의 영속성 확인2>
<컨테이너 생성 및 가동>
ubuntu@host1:~/Labs/ch06$ docker pull mysql:8.0.35-debian
8.0.35-debian: Pulling from library/mysql
0e0969fcaa82: Pull complete
2509e99ccd90: Pull complete
18449158c192: Pull complete
4838008371a5: Pull complete
555a500de9e6: Pull complete
7788a0cfe39d: Pull complete
4d82554e9050: Pull complete
473684d155cf: Pull complete
a2eabb9f2adb: Pull complete
80382a09301f: Pull complete
b929280da2d3: Pull complete
241a1df60142: Pull complete
Digest: sha256:1d9f393d115c41a382a1f7d8dad5c073f0809739525ce501c7bbe45b0d2740c4
Status: Downloaded newer image for mysql:8.0.35-debian
docker.io/library/mysql:8.0.35-debian
ubuntu@host1:~/Labs/ch06$ docker container run -d --name=mydb -e MYSQL_ROOT_PASSWORD=password -v mydb-data:/var/lib/mysql mysql:8.0.35-debian
0184f485b0e5880095046472f622d4bd1d2e6d1964648bbfccb2092f3ce92b64
<컨테이너 생성 확인>
ubuntu@host1:~/Labs/ch06$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
**0184f485b0e5 mysql:8.0.35-debian "docker-entrypoint.s…" 6 seconds ago Up 5 seconds 3306/tcp, 33060/tcp mydb**
69db6bdc9620 nginx:1.25.0-alpine "/docker-entrypoint.…" 3 hours ago Up 3 hours 80/tcp mginx_mem_1g
fa7bcf3a232b nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 80/tcp nginx_mem_1g
20fa045c6714 gcr.io/cadvisor/cadvisor:latest "/usr/bin/cadvisor -…" 20 hours ago Up 3 hours (healthy) 0.0.0.0:9559->8080/tcp, :::9559->8080/tcp cadvisor
<hangaram 데이터 베이스 보존 확인 가능>
ubuntu@host1:~/Labs/ch06$ docker container exec -it mydb bash
root@0184f485b0e5:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 11
Server version: 8.0.35 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| **hangaram** |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
'클라우드 + DevOps > Docker' 카테고리의 다른 글
Docker 마운트 실습 :: 마운트를 이용한 NginX 로그 기록 관리 (1) | 2024.02.28 |
---|---|
Docker :: 컨테이너 마운트mount 개념과 실습 (1) | 2024.02.27 |
Docker :: 컨테이너CPU 자원 한계 설정 (1) | 2024.02.25 |
Docker 네트워크 실습 심화 :: HAproxy ACL 조건 설정 (1) | 2024.02.24 |
Docker 네트워크 실습 :: HAproxy 구성 (0) | 2024.02.23 |