Actualmente estoy experimentando en Docker específicamente en el aspecto en el que un usuario dentro de un contenedor determinado afecta al propio host de Docker. En última instancia, quiero que el usuario pueda ejecutar contenedores en su propio host desde dentro de su contenedor. Suena un poco absurdo, pero espero que funcione.
En este momento, estoy buscando una manera para que ese usuario sea parte del grupo de docker del host de Docker. ¿Hay una manera de hacer eso?
Desde la perspectiva del host de Docker, cualquier usuario dentro del contenedor es tratado exactamente igual que un usuario fuera del contenedor con el mismo UID (¡no el mismo nombre!), independientemente de si el UID está realmente en uso en el host. Desafortunadamente, parece que solo los usuarios con un nombre de usuario pueden pertenecer a grupos, por lo que no puede simplemente agregar el UID al grupo. En su lugar, debe agregar el usuario host con el mismo UID al grupo (o crear un usuario con ese UID si no existe).
Escribí un script bash para generar archivos acoplables sobre la marcha con el usuario actual agregado en el contenedor y el grupo acoplable. Aquí está la carne de esto:
# get the current user's info user=$USER uid=`id -u $user` gid=`id -g $user` # get gid for group docker RESULT=$(id -g docker 2>&1) if [ 1 -ne $? ] ; then docker_gid=$RESULT fi echo FROM ubuntu:14.04 echo MAINTAINER Nobody "no-reply@nothere.com" echo USER root echo "RUN apt-get update && apt-get -y install docker-engine" echo "RUN /bin/bash -c 'getent passwd ${user} || \ adduser --system --gid ${gid} ${docker_group} --uid ${uid} --shell /bin/bash ${user} || \ usermod -l ${user} \$(getent passwd ${uid} | cut -d: -f1)'" if [ -n "$docker_gid" ] ; then echo "RUN /bin/bash -c 'getent group docker && groupmod --gid ${docker_gid} docker \ || groupadd --gid ${docker_gid} docker'" echo "RUN /bin/bash -c 'groups ${user} | grep docker || usermod --groups ${docker_gid} ${user}'" fiHTH!