Trong Dockerfile, VOLUME là một chỉ dẫn được sử dụng để khai báo các thư mục dữ liệu (volumes) trong container Docker. Chỉ thị này cho phép bạn định nghĩa các thư mục trong container mà bạn muốn gắn kết với các thư mục hoặc thiết bị khác trên host machine hoặc các container khác.

Cú pháp của VOLUME trong Dockerfile như sau:

VOLUME <đường_dẫn>
  • <đường_dẫn>: Đường dẫn tới thư mục trong container muốn khai báo là volume.

Khi bạn chạy container từ image đã xây dựng, bạn có thể sử dụng các tùy chọn -v hoặc –mount của lệnh docker run để gắn kết các thư mục hoặc thiết bị trên host machine với các volumes đã được định nghĩa bằng VOLUME trong Dockerfile.

Ví dụ, để khai báo một volume trong Dockerfile, bạn có thể thêm dòng sau:

VOLUME /app/data

Khi chạy container, bạn có thể gắn kết thư mục /path/to/host/data trên host machine với volume /app/data trong container bằng cách sử dụng -v hoặc –mount:

docker run -v /path/to/host/data:/app/data tên_image

Lưu ý rằng khi sử dụng VOLUME trong Dockerfile, Docker sẽ tự động tạo các volumes tương ứng khi chạy container, nếu chúng chưa tồn tại. Các thay đổi trong các volumes này sẽ được lưu giữ ngay cả sau khi container dừng lại và được truy cập qua các container khác trong cùng một host machine.

VOLUME cũng có thể được sử dụng trong Docker Compose để định nghĩa các volumes trong file compose.

Các bước

  • Tạo một image với VOLUME
  • Tìm volume đã được tạo
  • Mount thử volume để kiểm tra

Tạo một image với VOLUME

Dockerfile

FROM nginx:alpine
LABEL maintainer="hocdevops"
VOLUME /myvol
CMD [ "nginx","-g","daemon off;" ]

Build image Docker

$ docker build -t volume:v1 .

Tạo container dựa trên image volume:v1

$ docker container run --rm -d --name volume-test volume:v1

Tìm size được tạo volume

Kiểm tra tên của container

$ docker container inspect -f '' volume-test
ed09456a448934218f03acbdaa31f465ebbb92e0d45e8284527a2c538cc6b016

Xem list các volume

$ docker volume ls
DRIVER              VOLUME NAME
local               ed09456a448934218f03acbdaa31f465ebbb92e0d45e8284527a2c538cc6b016

Bạn sẽ thấy volume đã được tạo.

Đường dẫn mount volume trong server

$ docker container inspect -f '' volume-test
/var/lib/docker/volumes/ed09456a448934218f03acbdaa31f465ebbb92e0d45e8284527a2c538cc6b016/_data

Thử mount volume

Tạo một tập tin trong thư mục này

$ touch /var/lib/docker/volumes/ed09456a448934218f03acbdaa31f465ebbb92e0d45e8284527a2c538cc6b016/_data/mytestfile.txt

Kiểm tra tệp có trong container đang chạy không

$ docker container exec -it volume-test ls myvol
0 0 votes
Article Rating
Tagged:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments