Chuyển đến nội dung chính

Docker: Sử dụng Docker Volume - Part 10

Docker container được sử dụng để chạy các ứng dụng trong một môi trường riêng biệt. Theo mặc định, tất cả các thay đổi bên trong container sẽ bị mất khi container dừng. Nếu chúng ta muốn giữ data giữa các lần chạy, Docker volume và bind mount có thể giúp ích.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Docker Volumes và cách quản lý và kết nối chúng với container.

Volumes là gì?

Storage trong Docker là một tính năng quản lý data của Docker. Data ở đây có thể hiểu là các file được sinh ra trong quá trình chạy Ứng dụng, ví dụ như file log, file data, file report …

Mặc định khi một container được khởi chạy, data trong quá trình vận hành được chứa ở writeable layer và sẽ bị mất đi khi container bị xóa. Ngoài ra thì một nhược điểm nữa đó là data ở container này khó có thể chia sẻ data với các container khác.


Bind mount

Bind mount, hoặc host volume là một kết nối từ container đến một thư mục trên host. Nó cho phép host chia sẻ hệ thống file của riêng nó với vùng chứa, hệ thống này có thể được đặt ở chế độ read-only hoặc read-write.

Ví dụ: Tạo file file.txt và lưu vào thư mục hiện tại trên máy host

docker run -v $(pwd):/var/opt/project bash:latest bash -c "echo Hello > /var/opt/project/file.txt"

\$(pwd): working directory. Trên Windows Command Line, bạn thay \$(pwd) bằng %cd%, với PowerShell: \${PWD} 

Vd bạn đang ở folder "docker". Nếu muốn lưu file file.txt vào folder docker/test thì bạn sẽ thay $(pwd) bằng \$(pwd)/test

docker run -v $(pwd)/test:/var/opt/project bash:latest bash -c "echo Hello > /var/opt/project/file.txt"

Docker Volume

Volume là cơ chế ưa thích để tạo ra và sử dụng dữ liệu của Docker. Trong khi việc bind mounts bị phụ thuộc vào cấu trúc thư mục của host machine, thì Volume bị quản lý hoàn toàn bởi Docker.

Volume có thể được chia sẽ giữa các container.

Tạo volume

$ docker volume create data_volume
data_volume Trường hợp không có name được chỉ ra
$ docker volume create
467f9f5d5e1b23cfcc7c95d1378caea921ad72241c46ce0fd9d62cc295441b06
Liệt kê tất cả volume
$ docker volume ls
DRIVER    VOLUME NAME
local     467f9f5d5e1b23cfcc7c95d1378caea921ad72241c46ce0fd9d62cc295441b06
local     data_volume
Dùng filter để lọc lại kết quả
$ docker volume ls -f name=data
DRIVER    VOLUME NAME
local     data_volume
Để xem thông tin chi tiết hơn về volume đã được tạo mình dùng lệnh.
$ docker volume inspect data_volume
[
    {
        "CreatedAt": "2022-10-08T21:15:42+07:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/data_volume/_data",
        "Name": "data_volume",
        "Options": {},
        "Scope": "local"
    }
]
Remove volume
$ docker volume rm data_volume
data_volume
Remove all volumes
$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
data_volume

Khởi động 1 Container với 1 volume 

Sử dụng -v or --volume với 3 tham số: 

  • Source directory hoặc volume name
  • Đường dẫn trong container
  • (Optional) list các option, vd như ro

Tham khảo

https://blog.cloud365.vn/container/tim-hieu-docker-phan-7/

https://www.baeldung.com/ops/docker-volumes

Nhận xét

  1. https://devopsheaven.com/docker/docker-compose/volumes/2018/01/16/volumes-in-docker-compose.html

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.