Rootless docker
По-умолчанию докер работает в контексте root:
v@q3:~$ sudo docker container top quakejs
UID PID PPID C STIME TTY TIME CMD
root 832 809 0 Sep25 ? 00:00:00 /bin/sh /entrypoint.sh
root 938 832 0 Sep25 ? 00:00:06 /usr/sbin/apache2 -k start
root 941 832 33 Sep25 ? 08:02:36 node build/ioq3ded.js +set fs_game baseq3 set dedicated 1 +exec server.cfg
www-data 942 938 0 Sep25 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 943 938 0 Sep25 ? 00:00:00 /usr/sbin/apache2 -k start
Если нет, то создаем файл /etc/docker/daemon.json с содержимым:
{
"userns-remap": "default"
}
Перезапускаем Docker.
Теперь на хосте есть непривилегированный пользователь dockremap:
v@q3:~$ sudo cat /etc/passwd | grep doc
dockremap:x:102:109::/nonexistent:/bin/false
/nonexistent — домашний каталог пользователя (здесь указан несуществующий путь).
/bin/false — оболочка команд (shell), которой этот пользователь пользуется; /bin/false означает, что пользователь не может войти в систему.
Docker теперь работает в контексте этого пользователя:
v@q3:~$ sudo docker container top quakejs
UID PID PPID C STIME TTY TIME CMD
100000 972 949 0 17:41 ? 00:00:00 /bin/sh /entrypoint.sh
100000 1083 972 0 17:41 ? 00:00:00 /usr/sbin/apache2 -k start
100033 1086 1083 0 17:41 ? 00:00:00 /usr/sbin/apache2 -k start
100033 1087 1083 0 17:41 ? 00:00:00 /usr/sbin/apache2 -k start
100000 1144 972 60 17:41 ? 00:00:15 node build/ioq3ded.js +set fs_game baseq3 set dedicated 1 +exec server.cfg