在 docker-compose.yaml 中设置 security_opt 不起作用

Bid*_*der 8 config docker dockerfile docker-compose

我正在尝试security_opt根据官方 docker(docker-compose reference) 文档进行设置。它似乎不起作用docker-compose.yaml。我尝试用谷歌搜索它,但发现有关security_optdocker 的信息数量非常有限。

我正在尝试使用二进制启动图像docker-compose.yaml

version: "3.7"

services:
    test:
        container_name: testcontainer
        image: testimage
        hostname: testhost
        command: --test
        volumes:
            - ./data:/data
        security_opt:
            - label:user:testuser
            - no-new-privileges:true
Run Code Online (Sandbox Code Playgroud)

因此,当我运行时,docker-compose up -d它从 root 启动此服务,而不是从testuser.

但如果我添加user: uid:gid到服务配置中,它会从指定的位置开始uid

version: "3.7"

services:
    test:
        container_name: testcontainer
        image: testimage
        hostname: testhost
        command: --test
        volumes:
            - ./data:/data
        security_opt:
            - label:user:testuser
            - no-new-privileges:true
        user: 1001:1001
Run Code Online (Sandbox Code Playgroud)
  1. 为什么security_opt不起作用?
  2. security_opt: - label:user:testuser和 和有什么区别user: uid:gid
  3. 如何检查security_opt已应用的设置?

谷歌上似乎没有很多关于这个主题的信息。提前致谢。

Pau*_*lva 7

回答“我如何检查 security_opt 设置是否已应用?”

$ docker inspect [CONTAINER-NAME] --format '{{ .Id }}: SecurityOpt={{ .HostConfig.SecurityOpt }}'
Run Code Online (Sandbox Code Playgroud)

要对所有正在运行的容器执行此操作:

$ docker ps --quiet --all | xargs docker inspect --format '{{ .Id }}: SecurityOpt={{ .HostConfig.SecurityOpt }}'
Run Code Online (Sandbox Code Playgroud)