web-dev-qa-db-ja.com

docker-composeでsecompをunconfinedに設定します

プロセスをフォークできる必要があります。私はそれを理解しているので、security-optを設定する必要があります。 dockerコマンドでこれを試してみましたが、正常に動作します。ただし、docker-composeファイルでこれを行うと、何も実行されないように見えます。おそらく、composerightを使用していません。

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:APIv1の使用2017/09/0415:58:33 debug.go:97:引数を使用してプロセスを起動:[/ go/src/debug]できませんでした起動プロセス:fork/exec/go/src/debug:操作は許可されていません

12
Frozendragon

構成構文は正しいです。ただし、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']
8
webofmars