Skip to main content

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