プロセスをフォークできる必要があります。私はそれを理解しているので、security-optを設定する必要があります。 dockerコマンドでこれを試してみましたが、正常に動作します。ただし、docker-composeファイルでこれを行うと、何も実行されないように見えます。おそらく、composerightを使用していません。
docker run --security-opt=seccomp:unconfined <id> dlv debug --listen=:2345 --headless --log ./cmd/main.go
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:操作は許可されていません
構成構文は正しいです。ただし、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']