Các VOLUME
hướng dẫn tạo ra một khối lượng dữ liệu trong thùng chứa Docker của bạn khi chạy. Thư mục được cung cấp làm đối số VOLUME
là một thư mục bỏ qua Hệ thống tệp Liên minh và chủ yếu được sử dụng cho dữ liệu được chia sẻ và liên tục.
Nếu bạn chạy docker inspect <your-container>
, bạn sẽ thấy bên dưới Mounts
phần có một Source
vị trí đại diện cho vị trí thư mục trên máy chủ và một Destination
đại diện cho vị trí thư mục được gắn trong container. Ví dụ,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
Dưới đây là 3 trường hợp sử dụng cho docker run -v
:
docker run -v /data
: Điều này tương tự với việc chỉ định VOLUME
hướng dẫn trong Dockerfile của bạn.
docker run -v $host_path:$container_path
: Điều này cho phép bạn gắn kết $host_path
từ máy chủ của bạn vào $container_path
trong thùng chứa của bạn trong thời gian chạy. Trong quá trình phát triển, điều này rất hữu ích để chia sẻ mã nguồn trên máy chủ của bạn với vùng chứa. Trong sản xuất, điều này có thể được sử dụng để gắn kết những thứ như thông tin DNS của máy chủ (tìm thấy /etc/resolv.conf
) hoặc các bí mật vào thùng chứa. Ngược lại, bạn cũng có thể sử dụng kỹ thuật này để ghi nhật ký của bộ chứa vào các thư mục cụ thể trên máy chủ. Cả hai $host_path
và $container_path
phải là con đường tuyệt đối.
docker run -v my_volume:$container_path
: Điều này tạo ra một khối lượng dữ liệu trong thùng chứa của bạn tại $container_path
và đặt tên cho nó my_volume
. Về cơ bản, nó giống như việc tạo và đặt tên cho một tập bằng cách sử dụng docker volume create my_volume
. Đặt tên một ổ đĩa như thế này rất hữu ích cho một khối lượng dữ liệu chứa và một ổ lưu trữ chia sẻ sử dụng trình điều khiển lưu trữ đa máy chủ như Flocker .
Lưu ý rằng phương pháp gắn thư mục máy chủ dưới dạng khối lượng dữ liệu không có sẵn trong Dockerfile. Để trích dẫn tài liệu docker ,
Lưu ý: Điều này không có sẵn từ Dockerfile do tính di động và mục đích chia sẻ của nó. Vì bản chất của thư mục máy chủ là phụ thuộc vào máy chủ, một thư mục máy chủ được chỉ định trong Dockerfile có thể sẽ không hoạt động trên tất cả các máy chủ.
Bây giờ nếu bạn muốn sao chép các tệp của mình vào các thùng chứa trong môi trường không phát triển, bạn có thể sử dụng ADD
hoặc COPY
hướng dẫn trong Dockerfile của mình. Đây là những gì tôi thường sử dụng để triển khai không phát triển.
COPY
đếnADD
. Chúng gần giống nhau, nhưngADD
có một số khả năng bổ sung, ghi URL và lưu trữ tệp có thể gây ngạc nhiên.