在docker-compose中将secomp设置为未限制。

38

我需要能够分叉一个进程。据我所知,我需要设置security-opt。我尝试使用docker命令进行此操作,并且它运行良好。但是,在docker-compose文件中执行此操作似乎没有任何作用,可能是我没有正确使用compose。

Docker

docker run --security-opt=seccomp:unconfined <id> dlv debug --listen=:2345 --headless --log ./cmd/main.go

Docker-compose

设置

docker-compose.yml

networks:
  backend:

services:
  example:
    build: .
    security_opt:
      - seccomp:unconfined
    networks:
      - backend
    ports:
      - "5002:5002"
Dockerfile
FROM golang:1.8

RUN go get -u github.com/derekparker/delve/cmd/dlv
RUN dlv debug --listen=:2345 --headless --log ./cmd/main.go

命令

docker-compose -f docker-compose.yml up --build --abort-on-container-exit

结果

2017/09/04 15:58:33 server.go:73: 使用API v1 2017/09/04 15:58:33 debugger.go:97: 使用参数启动进程:[/go/src/debug] 无法启动进程:fork/exec /go/src/debug: 操作不允许

1个回答

39

语法正确,但是 security_opt 选项将应用于容器的新实例,因此与您尝试使用 Dockerfile 的 RUN 命令在构建时不可用。

正确的方式应该是:

Dockerfile:

FROM golang:1.8
RUN go get -u github.com/derekparker/delve/cmd/dlv

docker-compose.yml

networks:
  backend:

services:
  example:
    build: .
    security_opt:
      - seccomp:unconfined
    networks:
      - backend
    ports:
      - "5002:5002"
    entrypoint: ['/usr/local/bin/dlv', '--listen=: 2345', '--headless=true', '--api-version=2', 'exec', 'cmd/main.go']

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