es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Servidor DNS de Docker bind9 “falló: permiso”

Enfrentando un problema de permisos. Soy consciente de que puedo seguir las instrucciones en https://hub.docker.com/r/internetsystemsconsortium/bind9 y utilizar el comando docker run con volúmenes adjuntos, pero me gustaría almacenar estas carpetas localmente en un directorio personalizado /home/. Desafortunadamente, estoy teniendo un problema de permisos. Es probable que se deba ejecutar el comando chmod y chown.

docker-compose.yml:

version: '3.8'
services:
bind9:
    image: internetsystemsconsortium/bind9:9.16
    container_name: bind9
    ports:
    - 53:53/udp
    - 53:53/tcp
    - 127.0.0.1:953:953/tcp
    volumes:
    - ./etc:/etc/bind
    - ./cache:/var/cache/bind
    - ./lib:/var/lib/bind
    - ./log:/var/log

El comando <code>docker logs bind9</code> revela lo siguiente:


bind9 | 27-Dec-2021 14:34:19.139 cargando configuración desde '/etc/bind/named.conf'
bind9 | 27-Dec-2021 14:34:19.139 el directorio '/var/cache/bind' no es escribible
bind9 | 27-Dec-2021 14:34:19.139 /etc/bind/named.conf:2: análisis fallido: permiso denegado
bind9 | 27-Dec-2021 14:34:19.139 error al cargar la configuración: permiso denegado
bind9 | 27-Dec-2021 14:34:19.139 saliendo (debido a un error fatal)
bind9 salió con el código 1
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para el problema de permisos en el almacenamiento local con un contenedor Docker de bind9

    Al empujar la imagen de Docker de bind9 para almacenar carpetas localmente en un directorio personalizado (“/home/” en este caso), es común encontrarse con un problema de permisos que se puede resolver siguiendo los siguientes pasos:

    1. Verifica la propiedad de las carpetas en el directorio personalizado donde se almacenarán los datos. Utiliza el comando ls -l para verificar el propietario actual y el grupo de las carpetas. En este caso, vamos a utilizar “/home/bind9” como directorio de almacenamiento.
    $ ls -l /home/bind9
    drwxr-xr-x 2 user1 user1 4096 Dec 27 10:50 etc
    drwxr-xr-x 2 user1 user1 4096 Dec 27 10:50 cache
    drwxr-xr-x 2 user1 user1 4096 Dec 27 10:50 lib
    drwxr-xr-x 2 user1 user1 4096 Dec 27 10:50 log
    

    En este caso, estamos utilizando user1 como propietario y grupo de las carpetas.

    1. Cambia la propiedad y el grupo de las carpetas al usuario y al ID del grupo bind9 dentro del contenedor Docker, que generalmente es 999. Utiliza el comando chown para cambiar la propiedad y el ID del grupo de las carpetas al usuario bind9 dentro del contenedor Docker.
    $ sudo chown -R 999:999 /home/bind9
    
    1. Verifica los permisos de las carpetas. Utiliza el comando ls -l para verificar los permisos de las carpetas. En este caso, esperamos ver la propiedad del usuario y del grupo bind9 y los permisos de escritura en las carpetas.
    $ ls -l /home/bind9
    drwxr-xr-x 2 999 999 4096 Dec 27 10:50 etc
    drwxr-xr-x 2 999 999 4096 Dec 27 10:50 cache
    drwxr-xr-x 2 999 999 4096 Dec 27 10:50 lib
    drwxr-xr-x 2 999 999 4096 Dec 27 10:50 log
    

    Podemos ver que la propiedad y el ID de grupo han cambiado a 999, y las carpetas tienen los permisos esperados.

    1. Actualiza el archivo docker-compose.yml para utilizar las carpetas locales en /home/bind9. A continuación se muestra un ejemplo de archivo docker-compose.yml con los volúmenes actualizados.
    version: '3.8'
    services:
    
      bind9:
        image: internetsystemsconsortium/bind9:9.16
        container_name: bind9
        ports:
          - 53:53/udp
          - 53:53/tcp
          - 127.0.0.1:953:953/tcp
        volumes:
          - /home/bind9/etc:/etc/bind
          - /home/bind9/cache:/var/cache/bind
          - /home/bind9/lib:/var/lib/bind
          - /home/bind9/log:/var/log
    
    1. Inicia el contenedor bind9 utilizando docker-compose up.
    $ docker-compose up -d
    

    El contenedor Docker ahora debería poder leer y escribir en las carpetas locales en /home/bind9.

    1. Verifica los registros del contenedor bind9 utilizando docker logs bind9. Los registros deberían mostrar un inicio exitoso del contenedor sin errores de permiso denegado.
    $ docker logs bind9
    ...
    27-Dec-2021 15:07:38.441 zone 0.in-addr.arpa/IN: loaded serial 1
    27-Dec-2021 15:07:38.441 zone localhost/IN: loaded serial 2
    27-Dec-2021 15:07:38.441 daemon initialization complete, exiting.
    

    ¡Eso es todo! Con estos pasos, hemos logrado almacenar los datos de bind9 en un directorio personalizado y resolver cualquier problema de permisos que haya surgido.

Comments are closed.