Option privileged trong docker
Mình đang sử dụng goofys docker, khi chạy image này cần phải thêm option --privileged thì mới chạy đc container. Ai có thể giải thích cho mình ý nghĩ của opton này k ạ? Thêm nữa khi mình k thể sử dụng image này trong docker-compose. Config như sau
goofys:
privileged: true
mem_limit: 134217728
cpu_shares: 50
image:
env_file:
- "./goofys/.env"
volumes:
- goofys:/mnt/s3
1 CÂU TRẢ LỜI
Mình cũng chưa dùng goofys
bao giờ, nên cũng không hiểu rõ lắm, nhưng theo mình suy đoán thì:
- Check trên trang github https://github.com/kahing/goofys có đoạn giới thiệu
Goofys is a high-performance, POSIX-ish Amazon S3 file system written in Go
Goofys allows you to mount an S3 bucket as a file system.
Như vậy có vẻ như đây là công cụ để mount
file system
. Điều này đồng nghĩa với việc, để chạy được nó, bạn cần có quyền root
.
- Khi chạy Docker Container, theo mặc định thì hầu hết các thành phần có khả năng gây nguy hiểm thuộc về phần kernel sẽ bị vô hiệu quá, trong đó có các thành phần liên quan đến việc
mount
file system. Điều này có được nó rõ trong document của Docker tại đây
$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied
This will not work, because by default, most potentially dangerous kernel capabilities are dropped; including
cap_sys_admin
(which is required to mount filesystems).
Và tham số --privileged
sinh ra để giải quyết vấn đề đó.
The
--privileged
flag gives all capabilities to the container, and it also lifts all the limitations enforced by the devicecgroup
controller. In other words, the container can then do almost everything that the host can do.
Theo mình đoán thì đó có thể là lý do bạn cần có option --privileged
khi chạy Container
Cám ơn anh ạ! Goofys dùng để đồng bộ giữa thư mục chỉ định ở local với 1 bucket trên s3 a. Có cách nào để chạy hoặc chỉnh sửa file Docker để khi chạy container cần option này k anh.
@phuong1492 Theo mình nghĩ là không bạn ạ (^^;) để thực hiện việc mount file system với S3 bucket thì chắc là buộc phải có option --privileged
.
Option này được đặt khi khởi tạo container, chứ không liên quan gì đến bản thân Docker Image, nên dù có chỉnh sửa gì Dockerfile cũng không ăn thua đâu bạn ạ (^^;)