Chia sẻ dữ liệu giữa máy chủ Host, các Container trong Docker
- 22-08-2024
- Toanngo92
- 0 Comments
Mục lục
Ánh xạ thư mục host với container
Máy Host là hệ thống đang chạy Docker Engine, thư mục của máy host có thể chia sẻ để các Container có thể đọc, ghi, tương tác với dữ liệu.
Cú pháp:
docker run -it -v /home/path_to_data:/home/data nginx
Trong đó:
- path_to_data: đường dẫn đến thư mục máy host
- home/data: thư mục của image
Sau khi chạy lệnh, dữ liệu trên thư mục /
home/sitesdata/
của máy Host thì trong container sẽ được liên kết và có thể truy cập, cập nhật sửa đổi … thông qua đường dẫn /home/data
Chia sẻ dữ liệu giữa các container
Ví dụ, bạn có một container với id hoặc name là my_container, trong đó nó có mount thư mục Host vào (hoặc đã được chia sẻ tử Container khác)
Nếu chúng ta muốn tạo một container khác cũng nhận thư mục chia sẻ dữ liệu như my_container, thêm tham số –volumes-from my_container. Ví dụ:
docker run -it --volumes-from my_container mariadb
Ở đây, mình tạo ra container từ image mariadb và được chia sẻ dữ liệu với my_container.
Quản lý các ổ đĩa cứng thông qua Docker Volume
Chúng ta hoàn toàn có thể tạo và quản lý các ổ đĩa bên ngoài container, lệnh làm việc với ổ đĩa là docker volume với các trường hợp cụ thể sau:
# liệt kê danh sách ổ đĩa
docker volume ls
# Tạo ổ đĩa mới
docker volume create name_volume
# Xem thông tin chi tiết ổ đĩa
docker volume inspect name_volume
# Xóa ổ đĩa
docker volume rm name_volume
Mount ổ đĩa vào container mong muốn
# Tạo ổ đĩa tên my_disk
docker volume create my_disk
# Mount ổ đĩa vào container
# container truy cập tại /home/my_disk
docker run -it --mount source=my_disk,target=/home/my_disk nginx
Gán ổ đĩa vào container khi tạo container:
Nếu muốn ổ đĩa của bạn liên kết/trói buộc dữ liệu đến một thư mục cụ thể của máy HOST thì tạo ổ đĩa với tham số như sau:
docker volume create --opt device=path_in_host --opt type=none --opt o=bind volumename
# Tạo ổ đĩa có tên mydisk (dữ liệu lưu tại /home/mydata)
docker volume create --opt device=/home/mydata --opt type=none --opt o=bind mydisk
# Gán ổ đĩa vào container tại (/home/sites)
docker run -it -v mydisk:/home/sites ubuntu
Xóa các ổ đĩa không sử dụng bởi container:
docker volume prune