docker - 在 docker-compose 中将 secomp 设置为不受限制

标签 docker docker-compose seccomp

我需要能够 fork 一个进程。据我了解,我需要设置安全选项。我已经尝试使用 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: Using API v1 2017/09/04 15:58:33 debugger.go:97: launching process with args: [/go/src/debug] could not launch process: fork/exec /go/src/debug: operation not permitted

最佳答案

撰写语法是正确的。但是 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']

关于docker - 在 docker-compose 中将 secomp 设置为不受限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053672/

相关文章:

Dockerfile COPY {source :-. ..}

mysql - Docker-compose mysql : import . sql

c - 使用 seccomp 过滤器获取 "Bad System Call"

c - 对 seccomp 的隐式引用

Docker container_linux.go :247. 错误是什么,为什么会崩溃?

docker - 如何将当前文件夹内容传递到 CircleCI 中的 docker 镜像?

networking - 来自 Docker 容器的出站 telnet 连接被拒绝,但在主机上工作正常

Windows 10 主页上的 Docker - 在 docker 容器内连接到 docker 引擎

ruby-on-rails - 两个 docker 容器如何相互通信?

linux - 为什么 seccomp 禁止我正常的系统调用