Đối với bối cảnh:
docker --version
Docker phiên bản 20.10.7, bản dựng 20.10.7-0ubuntu5~20.04.2
kiểm tra 1: khối lượng là /myvolume
Đây là Dockerfile của tôi
TỪ núi cao:mới nhất
NGƯỜI DÙNG 1000:1000
KHỐI LƯỢNG /myvolume
và các lệnh build + run:
docker build -t myimage .
docker run --rm -it myimage
sau đó, một lần trong container:
/ $ whoami
whoami: không xác định uid 1000
/ $ ls -ld /myvolume/
gốc drwxr-xr-x 2 gốc 4096 ngày 8 tháng 3 09:22 /myvolume/
/ $ chạm /myvolume/kiểm tra
chạm: /myvolume/test: Quyền bị từ chối
Cho đến nay, điều này không có gì ngạc nhiên khi người dùng có UID 1000 không thể ghi vào /myvolume
.
kiểm tra 2: khối lượng là /tmp
Dockerfile của tôi
TỪ núi cao:mới nhất
NGƯỜI DÙNG 1000:1000
KHỐI LƯỢNG /tmp
(cùng các lệnh build + run) và trong vùng chứa:
/ $ whoami
whoami: không xác định uid 1000
/ $ ls -ld /tmp
drwxrwxrwt 2 gốc gốc 4096 ngày 24 tháng 11 09:20 /tmp
/ $ chạm /tmp/kiểm tra
/ $ ls -l /tmp
tổng số 0
-rw-r--r-- 1 1000 1000 0 ngày 8 tháng 3 09:23 kiểm tra
Bây giờ âm lượng đã thay đổi thành /tmp
, người dùng có UID 1000 có thể viết vào đó.
Tôi biết /tmp
thường có thể ghi được trên thế giới trong GNU/Linux, nhưng ở đây, điều này có vẻ "ma thuật" (điều này chỉ ổn khi có Harry Potter) và tôi tự hỏi liệu:
a) Tôi đang thiếu điều gì đó về cách Docker và ổ đĩa hoạt động (vui lòng giới thiệu cho tôi tài liệu/hướng dẫn thích hợp)
b) đó là sự trùng hợp ngẫu nhiên do thiết lập của tôi/thiếu điều gì đó rõ ràng và ngừng dựa vào giá trị mặc định
c) đó là một tính năng không có giấy tờ có thể thay đổi bất cứ lúc nào mà không cần thông báo trước
d) đó là một tính năng mà tôi không thể tìm thấy tài liệu về nó, và tôi có thể tin tưởng một cách an toàn vào thực tế là khi một tập đĩa được gắn vào /tmp
, nó luôn có thể ghi được trên thế giới