Contenedor Docker - toque: Permiso denegado

Contenedor Docker - toque: Permiso denegado

Tengo un problema extraño aquí, donde no veo el sentido de qué está saliendo mal.

Estoy ejecutando todo en un contenedor acoplable en mi máquina Linux (Ubuntu 16.04 LTS):

docker run -ti --rm promregator/promregator:0.2.1 /bin/bash

(nota: la imagen está disponible públicamente a través de hub.docker.com). El comando

docker version

(en el anfitrión) regresa

Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 22:01:48 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 22:01:48 2016
 OS/Arch:      linux/amd64

En el contenedor quiero crear un archivo como este:

promregator@6a68713fafc9:/$ cd /opt/promregator
promregator@6a68713fafc9:/opt/promregator$ touch test
touch: cannot touch 'test': Permission denied

(promregator es el usuario con el que se ejecuta la imagen de forma predeterminada). Tenga en cuenta que

  • El directorio proviene directamente de la imagen y no está asignado por volumen.
  • El directorio es propiedad del mismo usuario y los permisos son 0750:

    promregator@6a68713fafc9:/opt/promregator$ ls -al
    total 34348
    drwxr-x--- 2 promregator promregator     4096 Apr  1 01:00 .
    drwxr-xr-x 5 root        root            4096 Mar 20 01:01 ..
    -rw-r----- 1 promregator promregator 35159385 Apr  1 00:59 promregator.jar
    -rwxrwx--- 1 promregator promregator      642 Apr  1 00:57 promregator.sh
    

    Numéricamente el usuario es 1000

    promregator@6a68713fafc9:/opt/promregator$ ls -aln .
    total 34348
    drwxr-x--- 2 1000 1000     4096 Apr  1 01:00 .
    [...]
    

Tenga en cuenta también que la misma operación funciona en /home/promregator:

promregator@6a68713fafc9:/opt/promregator$ cd /home/promregator
promregator@6a68713fafc9:~$ touch test
promregator@6a68713fafc9:~$ ls -al .
total 8
drwx------ 2 promregator promregator 4096 Apr  7 11:45 .
drwxr-xr-x 4 root        root        4096 Apr  7 11:45 ..
-rw-r--r-- 1 promregator promregator    0 Apr  7 11:45 test
promregator@6a68713fafc9:~$ ls -aln .
total 8
drwx------ 2 1000 1000 4096 Apr  7 11:45 .
drwxr-xr-x 3    0    0 4096 Apr  7 11:45 ..
-rw-r--r-- 1 1000 1000    0 Apr  7 11:45 test

Tenga en cuenta que, si ejecuto el contenedor como root usando

docker run -ti --rm -u root promregator/promregator:0.2.1 /bin/bash

Puedo crear el archivo en la primera ubicación:

root@eb29fa8acb95:/# cd /opt/promregator/
root@eb29fa8acb95:/opt/promregator# touch test

Esto me dice que hay algo "raro" con el usuario promregator.

En un host diferente (he comparado los identificadores sha1 de las imágenes), el archivo se puede crear como se esperaba, si el contenedor se inició con docker run -ti --rm promregator/promregator:0.2.1 /bin/bash. La información de la versión de ese host indica

Client:
 Version:       17.12.0-ce
 API version:   1.35
 Go version:    go1.9.2
 Git commit:    c97c6d6
 Built: Wed Dec 27 20:11:19 2017
 OS/Arch:       linux/amd64

Server:
 Engine:
  Version:      17.12.0-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.2
  Git commit:   c97c6d6
  Built:        Wed Dec 27 20:09:54 2017
  OS/Arch:      linux/amd64
  Experimental: false

¿Alguna idea, sugerencia... para mí, qué podría ser esto?

¡Gracias de antemano!

Respuesta1

Me encontré con el mismo problema hoy. Mi solución es desactivar selinux con "setenforce 0".

información relacionada