2017-02-14 15 views
1

Я строю/развертываю go/golang микро-сервисы на изображениях с нуля.не-привилегированное исполнение FROM scratch

Можно ли указать непривилегированное выполнение на изображении, построенном таким образом - на изображении есть только два файла: исполняемый файл и файл корневого сертификата, поэтому не существует какой-либо концепции привилегии в контейнере.

Я также использую контейнеры только для чтения и --selinux-enabled = true --icc = false --iptables = true, но будет чувствовать себя более теплым и нечетким, если бы знал, что исполняемый файл работает как «общий», не-привилегированный пользователь.

ответ

0

У вас нет выбора у пользователя (root), запускающего CMD внутри контейнера, запущенного из созданного образа «FROM scratch».

Но по определению контейнера этот пользователь может влиять только на собственное (диск, память, ресурсы) пространство, а не на хост. Так что это не имеет значения.

Единственной альтернативой может быть определение контейнера с нуля только для объявления контейнера тома, который вы использовали бы в полноценном изображении, которое может работать с пользователем без полномочий root.
См «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 : 

Контейнер, который подключает этот минимальный контейнер объем должен создать пользователя с идентификатором 1000:

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

Это не то, что вам нужно (так как Go не нуждается в динамических библиотеках и может работать исключительно на системных вызовах). Но это иллюстрирует, как пользователь, не являющийся пользователем root, может использовать контейнер «FROM scratch» (здесь в качестве тома)

+0

См. Также https://github.com/airdock-io/docker-base/wiki/How-Managing-user -in-docker-container – VonC

+0

Спасибо, сэр, очень ценим! –

 Смежные вопросы

  • Нет связанных вопросов^_^