Khái Niệm Volume Dữ Liệu Trong Docker

Volume Dữ Liệu Docker

Volume dữ liệu trong Docker là một tính năng mạnh mẽ cho phép lưu trữ dữ liệu bên ngoài container, giúp dữ liệu tồn tại ngay cả khi container bị xóa hoặc khởi động lại.

1. Tạo Volume bằng Tham số -v

Để mount một thư mục từ máy chủ vào container, ta sử dụng tham số -v:

docker run -it -v /đường/dẫn/máy/chủ:/đường/dẫn/container
# Ví dụ thực tế
docker run -dit -v /home/data:/usr/local/app_data --name mynginx nginx:latest

Sau khi thực thi lệnh trên, hệ thống sẽ tự động tạo các thư mục tương ứng trên cả máy chủ và container. Khi bạn thêm một tệ tin vào thư mục trên máy chủ, nội dung đó sẽ tự động đồng bộ vào thư mục tương ứng trong container.

Để kiểm tra mount thành công, sử dụng lệnh:

docker inspect mynginx

Kết quả sẽ hiển thị thông tin mount:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/home/data",
        "Destination": "/usr/local/app_data",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
]

2. Mount Ẩn Danh và Mount Có Tên

Mount ẩn danh (chỉ chỉ định đường dẫn trong container):

docker run -d -p 8080:80 --name webserver -v /var/www/html nginx

Mount có tên (sử dụng tên thay vì đường dẫn máy chủ):

docker run -d -p 8081:80 --name webserver2 -v website-data:/var/www/html nginx

Xem danh sách volume:

docker volume ls

Mặc định, tất cả volume Docker được lưu tại:

/var/lib/docker/volumes

Dữ liệu của volume cụ thể nằm tại:

/var/lib/docker/volumes/tên-volume/_data

3. Quyền Truy Cập Volume

Thiết lập quyền đọc chỉ (read-only):

docker run -d -p 8080:80 --name nginx_ro -v nginx_config:/etc/nginx:ro nginx

Thiết lập quyền đọc-ghi (read-write - mặc định):

docker run -d -p 8081:80 --name nginx_rw -v nginx_config:/etc/nginx:rw nginx

4. Tạo Dockerfile với Volume

Dockerfile là file cấu hình để xây dựng image Docker:

# Sử dụng image cơ bản
FROM ubuntu:20.04
# Mount volume
VOLUME ["data", "config"]
# Cài đặt ứng dụng
RUN apt-get update && apt-get install -y nginx
# Khởi động dịch vụ
CMD ["nginx", "-g", "daemon off;"]

Xây dựng image từ Dockerfile:

docker build -f Dockerfile -d myapp .

Chạy container từ image tùy chỉnh:

docker run -it --name myapp_container myapp

5. Chia Sẻ Volume Giữa Các Container

Sử dụng tham số --volumes-from để chia sẻ volume giữa các container:

# Tạo container chính
docker run -dit --name data_container -v shared_data:/app/data ubuntu
# Tạo container phụ chia sẻ volume từ container chính
docker run -dit --name app_container1 --volumes-from data_container ubuntu
# Tạo container phụ khác
docker run -dit --name app_container2 --volumes-from data_container ubuntu

Khi bạn thay đổi file trong shared_data trên một container, các container khác và máy chủ đều sẽ được cập nhật đồng bộ.

Ngay cả khi container chính bị dừng, các container khác vẫn có thể truy cập dữ liệu thông qua volume được chia sẻ.

Tính năng này rất hữu ích khi làm việc với các ứng dụng cần chia sẻ dữ liệu như cơ sở dữ liệu, file tạm thời, hoặc cấu hình ứng dụng.

Thẻ: docker Container Data Volumes Docker Volumes dockerfile Data Persistence

Đăng vào ngày 24 tháng 5 lúc 00:43