2017-02-14 8 views
1

私はscratchからイメージ上にgo/golangマイクロサービスを構築/展開しています。特権のない実行FROMスクラッチ

このようにして構築されたイメージに特権のない実行を指定することは可能ですか?イメージには2つのファイルしかありません。実行可能ファイルとルート証明書ファイルです。コンテナ内の特権。

私はまた、実行可能ファイルが "共通"として実行されていることを知っていた場合、読み込み専用のコンテナと--selinux-enabled = true --icc = false --iptables = trueを使用しますが、非特権ユーザー。

答えて

0

"FROM scratch"で構築されたイメージから起動したコンテナ内でCMDを実行しているユーザ(ルート)には選択肢がないようです。

しかし、コンテナの定義によって、そのユーザーはホストではなく、独自の(ディスク、メモリ、リソース)領域にのみ影響を与えることができます。それは問題ではありません。

唯一の代替方法は、非ルートユーザーで実行できる本格的なイメージで使用するボリュームコンテナを宣言するために、最初からコンテナを定義することです。
は "Running as a non-root inside a container"

$ echo 'FROM scratch 
ADD data.tar/
VOLUME ["/data"]' > Dockerfile 

$ docker build -t minimal . 
$ docker create --name minimal minimal : 

この最小容積コンテナがID 1000でユーザーを作成する必要があるマウントコンテナを参照してください:あなたがいるので(必要なものではありません

$ docker run --rm --volumes-from minimal -it debian:jessie /bin/bash -c 'useradd postgres && ls -l /data' 

Goプログラムはダイナミックライブラリを必要とせず、システムコールのみで実行できます)。しかし、これは、ルート以外のユーザーが "FROM scratch"コンテナ(ここではボリューム)を使用する方法を示しています

+0

https://github.com/airdock-io/docker-base/wiki/How-Managing-userも参照してください。 -in-docker-container – VonC

+0

大変ありがとうございました! –

関連する問題