如何将docker-compose容器提升为特权模式?

36
我之前使用 sudo docker run --privileged container_name 命令来运行容器。但现在我使用 YML 文件和命令 docker-compose up 来启动容器,但是我不知道如何在使用该命令时添加 --privileged 标志。我已经尝试在 YML 中添加 privileged: true,但在这种情况下它无法正常工作。
2个回答

87

有一个合适的参数可用:

web:
  image: an_image-image:1.0
  container_name: my-container
  privileged: true
  entrypoint: ["/usr/sbin/init"]
  ports:
    - "8280:8280"

2
这是什么版本?3.1显示不支持。 - blissweb
1
这应该是被选中的答案,因为这是在初始问题中要求的docker-compose文件的正确方法。 - Niklas Möller
1
添加了 privileged: true 但是出现了以下错误:Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: process_linux.go:446: setting rlimits for ready process caused: error setting rlimit type 7: operation not permitted: unknown - Chris
1
@Chris,这是因为运行命令的用户不被允许以特权模式运行容器,可能是因为守护程序正在以非root模式运行。 - d70rr3s
为什么它是“合适的”? - alper

-41
我通过以下方式自己解决了这个问题: 在docker-compose.yml文件中,我有这两行用于指定镜像和容器名称。
version: "3"
services:
  app:
    image: my_image
    container_name: my-container

因此,为了使用--privileged标志运行它,我使用了以下命令:sudo docker run --privileged my-container


14
使用docker命令不会读取docker-compose.yml文件的内容,只有docker-compose才会读取。这可能是导致您回答受到许多负面评价的原因之一。更糟糕的是,您自己回答并接受了一个明显错误的答案。 - vaab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接