CodeGym /Các khóa học /Docker SELF /Sử dụng binds

Sử dụng binds

Docker SELF
Mức độ , Bài học
Có sẵn

5.1 Ý tưởng về bind mounts

Mount thư mục của host vào container bằng cách sử dụng bind mounts là một tính năng mạnh mẽ của Docker, cho phép container sử dụng trực tiếp các file và thư mục có sẵn trong hệ thống host. Điều này đặc biệt hữu ích khi phát triển, kiểm tra và cấu hình, khi cần sử dụng các file cục bộ mà không cần copy chúng vào container. Ở bài giảng này, tụi mình sẽ tìm hiểu cách sử dụng bind mounts, đưa ra các ví dụ và best practices dành cho nó.

Bind mounts cho phép bạn mount những thư mục hoặc file cụ thể từ hệ thống của host vào trong container. Nó khác với volumes, vốn được quản lý bởi Docker và được lưu trữ trong một thư mục đặc biệt.

Lợi ích của việc sử dụng bind mounts

  1. Truy cập trực tiếp vào file của host: Container có thể sử dụng và chỉnh sửa trực tiếp các file trên host.
  2. Tiện lợi khi phát triển: Devs có thể chỉnh sửa file trên host và thấy sự thay đổi đó trong container ngay lập tức.
  3. Linh hoạt: Bất kỳ thư mục nào trên host đều có thể được mount vào container.

Câu lệnh để mount bind mounts

Bind mounts được mount bằng cách sử dụng các tham số -v hoặc --mount khi khởi chạy container.

5.2 Ví dụ sử dụng tham số -v

1. Mount thư mục của host vào container

Ví dụ đơn giản về việc mount thư mục của host vào container:

Terminal

docker run -d --name my_container -v /path/on/host:/path/in/container nginx

Trong ví dụ này, thư mục /path/on/host trên host được mount vào thư mục /path/in/container bên trong container nginx.

2. Mount file của host vào container

Bạn cũng có thể mount các file riêng lẻ:

Terminal

docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx

Trong ví dụ này, file cấu hình config.conf trên host được mount thành file cấu hình nginx.conf bên trong container.

5.3 Ví dụ về việc sử dụng tham số --mount

Tham số --mount cung cấp một cách chi tiết hơn để mount các thư mục bind với khả năng chỉ định các tham số khác nhau.

1. Mount thư mục sử dụng --mount

Terminal

docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx

Ví dụ này tương tự với ví dụ trước sử dụng -v, nhưng dùng cú pháp chi tiết hơn.

2. Mount ở chế độ chỉ đọc

Terminal

docker run -d --name my_container --mount 
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx

Trong ví dụ này, thư mục được mount trong chế độ chỉ đọc, điều này ngăn không cho sửa đổi các tệp trong container.

5.4 Các ví dụ thực tế

Để phát triển ứng dụng web, bạn có thể mount thư mục chứa code nguồn từ host vào container.

Tạo thư mục chứa code nguồn trên host:

Terminal

mkdir -p ~/my_web_app
echo "Xin chào, Thế giới!" > ~/my_web_app/index.html

Chạy container với việc mount thư mục:

Terminal

docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx

Bây giờ bất kỳ thay đổi nào trong thư mục ~/my_web_app trên host sẽ được phản ánh ngay lập tức trong container.

Ví dụ 2: Sử dụng file cấu hình

Bạn có thể mount file cấu hình từ thư mục trên host vào container.

Tạo file cấu hình trên host:

Terminal

echo "user www-data;" > ~/nginx.conf

echo "worker_processes auto;" >> ~/nginx.conf

Chạy container với việc mount file cấu hình:

Terminal

docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx

Trong ví dụ này, file cấu hình Nginx trên host được sử dụng bên trong container.

5.5 Kiểm tra các thư mục và tệp đã mount

Bạn có thể kiểm tra nội dung của các thư mục và tệp đã mount bằng cách sử dụng lệnh docker exec để thực thi các lệnh bên trong container.

Ví dụ

Kiểm tra nội dung thư mục:

Terminal

docker exec -it my_container ls /path/in/container

Kiểm tra nội dung tệp:

Terminal

docker exec -it my_container cat /path/in/container/config.conf

Xóa các thư mục bind

Các thư mục bind không được Docker quản lý trực tiếp, do đó việc xóa chúng được thực hiện ở cấp hệ thống tệp của host.

Ví dụ

Xóa thư mục bind trên host:

Terminal

rm -r /path/on/host
1
Опрос
Quản lý dữ liệu trong Docker,  19 уровень,  4 лекция
недоступен
Quản lý dữ liệu trong Docker
Quản lý dữ liệu trong Docker
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION