Asked Oct 16th, 2017 9:59 AM 188 1 1
  • 188 1 1
+1

Option privileged trong docker

Share
  • 188 1 1

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 ANSWERS


Answered Oct 17th, 2017 3:37 AM
Accepted
+2

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ì:

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
[email protected]:/# 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 device cgroup 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 😃

Share
Hoàng Phương @phuong1492
Oct 17th, 2017 4:27 AM

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.

0
| Reply
Share
Tran Duc Thang @thangtd90
Oct 17th, 2017 6:29 AM

@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 ạ (^^;)

0
| Reply
Share