[Thực hành Docker] bài 2: chia sẻ dữ liệu giữa máy host với container, giữa các container với nhau

    

    Xin chào mọi người tiếp tục bài 2 series thực hành Docker nay chúng ta cùng tìm hiểu và thực hành với các nội dung về việc chia sẻ dữ liệu trong docker.

    Chia sẻ dữ liệu trong docker là gì: chia sẻ dữ liệu trong docker là khi những dữ liệu được sử dụng ở nhiều nơi, nhiều container hoặc dữ liệu lưu trên máy host nhưng các container muốn sử dụng và sửa đổi chúng thì chúng ta sẽ chia sẻ dữ liệu đó cho các container có quyền thao tác.

    Ví dụ: ta có 2 file File1.txt và File2.txt lưu trên máy host và có 3 container là container_1 container_2 và container_3, ta chia sẻ các file này cho cả 3 container đó sử dụng thì đó chính là việc chia sẻ dữ liệu trong docker

Chia sẻ dữ liệu giữa máy host và container

    Ở phần thực hành này chúng ta sẽ tạo ra thư mục data bên trong có file hello.txt trên máy host và chia sẻ thư mục này với container

1. Tạo dữ liệu trên máy host

    Ta tạo thư mục data tại desktop và có chứa file hello.txt

     Dùng lệnh pwd thì ta lấy được đường dẫn đến thư mục này là : /home/nguyen.van.thinhb/Desktop/data

2. Chia sẻ thư mục data vừa tạo mới 1 container

    Ta sẽ tạo một container từ image ubuntu và nhận dữ liệu chia sẻ là thư mục data của máy host bằng lệnh

docker run -it -v /home/nguyen.van.thinhb/Desktop/data:/home/data_container ubuntu

    Để chia sẻ dữ liệu giữa máy host và container thì ta thêm vào tham số -v

    Để container có thể nhận tương tác và có kết nối với terminal thì thêm tham số -it

    /home/nguyen.van.thinhb/Desktop/data : là đường dẫn đến thư mục chứa dữ liệu trên máy host để chia sẻ (ta vừa dùng lệnh pwd ở trên để lấy đường dẫn này)

    /home/data_container là đường dẫn đến thư mục chưá dữ liệu trên container

    ubuntu là image ubuntu dùng để tạo ra container

    Sau khi chạy lệnh trên ta đã tạo ra 1 container từ image ubuntu và đang đứng trong terminal của container đó, cd vào thư mục home sẽ thấy thư mục data_container và có file hello.txt => dữ liệu đã được chia sẻ từ máy host vào container

    Dữ liệu giữa 2 thư mục này được map với nhau, nếu container lưu dữ liệu vào thư mục này thì cũng lưu trên host, khi xóa container thì dữ liệu vẫn được lưu trên máy host

Chia sẻ dữ liệu giữa 2 container

    Bài toán: ta có thư mục data ở máy host và muốn chia sẻ thư mục này cho container_1 sử dụng, đồng thời ta cũng chia sẻ thư mục này cho container_2 sử dụng.

    Ở đây ta tiếp tục sự dụng phần vừa thực hành trên (chia sẻ dữ liệu giữa máy host và container), ta đã có thư mục data ở máy host và đã chia sẻ cho 1 container như trên.

    Tiếp theo ta sẽ tạo một container nữa và được chia sẻ dữ liệu từ container cũ

    Vẫn ở trong container cũ ta nhấn tổ hợp phím Ctrl + p và Ctrl + q để thoát ra ngoài container nhưng vẫn chạy container đó

    chạy lệnh docker ps sẽ thấy container đó vẫn đang chạy.

    

    Giờ ta sẽ tạo một container mới được chia sẻ dữ liệu từ thư mục data_container của container tạo trước đó bằng lệnh

docker run -it --name C2 --volumes-from b7cf8479548f ubuntu

    Lệnh trên ta tạo container có tên là C2 từ image ubuntu và được chia sẻ dữ liệu từ container có Id là b7cf8479548f (container tạo trước đó)

    chạy xong lệnh trên thì ta đang đứng trong container C2 vừa tạo, cd vào thư mục home sẽ thấy thư mục data_container được chia sẻ

    

Tạo và quản lý ổ đĩa (volume), để chia sẻ dữ liệu các ổ đĩa cho các container

    Ngoài cách chia sẻ dự liệu giữa máy host với các container thì trong docker còn cho phép chúng ta có thể chia sẻ dữ liệu thông qua tạo và quản lý ổ đĩa, những ổ đĩa được tạo ra và gán vào các container, khi container bị xóa thì các ổ đĩa vần còn tồn tại chúng chỉ mất đi khi ta xóa các ổ đĩa

1: Tạo ổ đĩa

    Trước hết ta có lệnh docker volume ls để xem danh sách các ổ đĩa

    Ở đây mình có nhiều ổ đĩa sẵn đang sử dụng

    Để tạo ổ đĩa tên là D1 ta dùng lệnh: docker volume create D1

    Kiểm tra thông tin 1 ổ đĩa: docker volume inspect D1

    Xóa ổ đĩa : docker volume rm [Ten]

    

2: Gán ổ đĩa vào container

    Ta đã tạo ra ổ đĩa D1 giờ chúng ta sẽ tạo 1 container và gán ổ đĩa D1 vào container đó để contaner có thể sử dụng ổ đĩa D1 bằng lệnh sau

    docker run -it --name container1 --mount source=D1,target=/home/disk2 ubuntu

    Lệnh trên là ta tạo container nên là container1

    Tham số --mount là để gán thêm ổ đĩa khi tạo container

    source=D1 là tham số ổ đĩa cần gán vào container

    target=/home/disk2 với /home/disk2 là thư mục ánh xạ ổ đĩa D1 vào container

    Ta thoát và xóa container đó đi thì ổ đĩa vẫn còn

    

3: Tạo ổ đĩa ánh xạ lên một foder trên máy host

    Ta muốn tạo một ổ đĩa D2 ánh xạ cố định lên một folder có sẵn trên máy host bằng lệnh

    docker volume create --opt device=/home/nguyen.van.thinhb/Desktop/data/ --opt type=none --opt o=bind D2

    Tham số thứ nhất --opt device=/home/nguyen.van.thinhb/Desktop/data/ là đường dẫn đến thư mục trên máy host

    Tham số thứ 2 type=none

    Ổ đĩa D2 đã được tạo và ánh xạ vơi thư mục trên máy host, ta có thể kiểm tra ổ đĩa bằng lệnh docker volume inspect D2

    

4: tạo container kèm gán ổ đĩa ánh xạ trên local

    docker run -it --name=container3 -v D2:/home/disk ubuntu

    Lệnh trên tạo container tên là container3 từ image ubuntu, có gán ổ đĩa D2 vào đường dẫn /home/disk trên container3, D2 được tạo ánh xa với 1 foder trên máy host ở phần trên

Kết bài

    Các bạn nên thực hành nhiều để nhớ và hiểu rõ hơn, phần sau mình sẽ viết về Network trong Docker. Cảm ơn mọi người đã theo dõi.

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan