Los espacios de nombres en Linux

Este documento plantea varios experimentos con los espacios de nombres de Linux (Linux espacios de nombres), una de las tecnologías que se usan para implementar contenedores en Linux. Por cada experimento, se deberían ejecutar los mandatos especificados y analizar y comprender los resultados obtenidos.

Experimento 1: UTS espacios de nombres

echo $$ # PID del bash original
ls -l /proc/$$/ns # espacios de nombres originales
sudo unshare -u bash # se requiere ser superusuario
echo $$ # PID del nuevo bash
ls -l /proc/$$/ns  # nuevos espacios de nombres
hostname MyBox
hostname
hostname # ejecute este mandato en otra ventana
exit
hostname

Experimento 1: solución

Resultados:

Explicación:

Experimento 2: espacios de nombres de PID

echo $$ # PID del bash original
ls -l /proc/$$/ns # espacios de nombres originales
sudo unshare -f --mount-proc -p bash # se requiere ser superusuario
echo $$ # PID del nuevo bash
ls -l /proc/$$/ns  # nuevos espacios de nombres
ps
ps -ef # ejecute este mandato en otra ventana y encuentre el PID del nuevo proceso bash de la primera ventana
exit

Experimento 3: espacios de nombres de montaje

ls -l /proc/$$/ns # espacios de nombres originales
sudo unshare -m bash # se requiere ser superusuario
ls -l /proc/$$/ns  # espacios de nombres nuevos
mount -t  tmpfs tmpfs /mnt
df -TH
echo HELLO > /mnt/file
cat /mnt/file
cat /mnt/file # ejecute este mandato en otra ventana
umount /mnt
exit

Experimento 4: espacios de nombres de usuarios

ls -l /proc/$$/ns # espacios de nombres originales
id
unshare -r -u bash # NO se requiere ser superusuario
ls -l /proc/$$/ns  # espacios de nombres nuevos
id
cat /proc/$$/uid_map
cat /proc/$$/gid_map
hostname MyBox
hostname
mount -t tmpfs tmpfs /mnt
df -TH
cat /etc/shadow
exit

Experimento 5: Más sobre espacios de nombres de usuarios

ls -l /proc/$$/ns # espacios de nombres originales
id
unshare -r -m -u -f --mount-proc -p bash # NO se requiere ser superusuario
ls -l /proc/$$/ns  # espacios de nombres nuevos
id
cat /proc/$$/uid_map
cat /proc/$$/gid_map
ps
hostname MyBox
hostname
mount -t tmpfs tmpfs /mnt
df -TH
cat /etc/shadow
exit