[docker] Ver o configurar el servidor DNS de Docker en Linux

Configuración de comando

Para ver o configurar los servidores DNS de Docker, puede utilizar los siguientes métodos:

  1. Ver la configuración DNS de Docker:

    • En Linux, puede ver la configuración DNS de Docker ejecutando el siguiente comando:
      docker info | grep -i dns
      
    • En Windows y macOS, la configuración de DNS se puede encontrar en la configuración de Docker Desktop.
  2. Configure el servidor DNS de Docker:

    • En Linux, puede daemon.jsonconfigurar el servidor DNS editando el archivo de configuración de Docker. Este archivo generalmente se encuentra /etc/docker/en el directorio. El archivo de configuración se puede abrir usando el siguiente comando:
      sudo nano /etc/docker/daemon.json
      
      Agregue o modifique el campo en el archivo de configuración dnspara especificar la dirección del servidor DNS deseada, por ejemplo:
      {
              
              
        "dns": ["8.8.8.8", "8.8.4.4"]
      }
      
      Después de guardar el archivo de configuración, reinicie el servicio Docker.
    • En Windows y macOS, puede utilizar la interfaz de configuración de Docker Desktop para configurar el servidor DNS. Abra Docker Desktop, haga clic en el icono de Docker en la bandeja del sistema, seleccione "Configuración", luego seleccione la pestaña "Daemon", agregue la dirección del servidor DNS requerida en la sección "DNS", guarde los cambios y reinicie Docker.

Configurar en Docker-Compse

daemon.jsonSi necesita mantener la configuración DNS consistente en Docker Compose , puede usar daemon.jsonla misma configuración del servidor DNS. El siguiente es un docker-compose.ymlarchivo de ejemplo que se usaría con daemon.jsonla misma configuración del servidor DNS:

version: '3'
services:
  myapp:
    image: myapp
    dns:
      - 127.0.0.11
      - 114.114.114.114
      - 8.8.8.8
    dns_search:
      - ""

En el ejemplo anterior, dnsel campo especifica daemon.jsonla misma configuración del servidor DNS que el campo y dns_searchel campo se establece en una cadena vacía, lo que indica que no se utiliza el dominio de búsqueda predeterminado.

Montar la configuración, montar el resolv.conf del host

Ruta de montaje

- "/etc/resolv.conf:/etc/resolv.conf"

Servidor de resolución 127.0.0.11

127.0.0.11es una dirección IP especial, que es el solucionador de DNS predeterminado de Docker. Cuando utiliza el solucionador de DNS predeterminado dentro de un contenedor Docker, el contenedor envía consultas de DNS a 127.0.0.11esta dirección.

Dentro de Docker, el contenedor ejecuta su propio servidor DNS, que maneja las consultas DNS dentro del contenedor. Por lo tanto, cuando las aplicaciones dentro del contenedor necesitan resolución DNS, envían consultas DNS a 127.0.0.11esta dirección.

127.0.0.11Solo funciona dentro de la red Docker y no se puede acceder a él a través del host ni de otras redes. Esta dirección solo se usa para la resolución de DNS dentro del contenedor.

Ingrese al contenedor y use la prueba de ping

Para ingresar al contenedor y usar pingel comando, puede usar docker execel comando. Estos son los pasos específicos:

  1. Primero, use docker psel comando para ver la lista de contenedores en ejecución y busque el ID o el nombre del contenedor que desea ingresar.

  2. Ejecute el siguiente comando para ingresar a la terminal de línea de comando del contenedor:

    docker exec -it <容器ID或名称> /bin/bash
    

    Esto ingresará a la terminal de línea de comando del contenedor en modo interactivo. Si bash no está instalado en el contenedor, puede intentar usar /bin/shu otros shells disponibles.

  3. pingDespués de ingresar al contenedor, puede ejecutar comandos en la terminal de línea de comandos , por ejemplo:

    ping <目标IP或域名>
    

    Reemplace <目标IP或域名>con la dirección IP o el nombre de dominio del objetivo al que desea hacer ping.

Tenga en cuenta que para utilizar docker execel comando para ingresar a un contenedor, el contenedor debe estar ejecutándose. Si el contenedor está detenido, docker startinícielo primero usando el comando.

Pruebe la resolución del nombre de dominio DNS en el contenedor

pingPara probar si el contenedor puede resolver el nombre de dominio, puede usar el comando o dentro del contenedor nslookup. Aquí hay dos métodos:

  1. Utilice pingel comando para probar la resolución de nombres de dominio:

    • Ingrese a la terminal de línea de comando del contenedor y use docker execel comando mencionado anteriormente.
    • Dentro del contenedor, ejecute pingel comando y especifique el nombre de dominio, por ejemplo:
      ping example.com
      
    • Si el contenedor puede resolver y comunicarse con el nombre de dominio, se mostrará un resultado similar al siguiente:
      PING example.com (93.184.216.34): 56 data bytes
      64 bytes from 93.184.216.34: icmp_seq=0 ttl=57 time=13.571 ms
      ...
      
  2. Utilice nslookupel comando para probar la resolución de nombres de dominio:

    • Ingrese a la terminal de línea de comando del contenedor.
    • Dentro del contenedor, ejecute nslookupel comando y especifique el nombre de dominio, por ejemplo:
      nslookup example.com
      
    • Si el contenedor puede resolver el nombre de dominio, se mostrará un resultado similar al siguiente:
      Server:    127.0.0.11
      Address 1: 127.0.0.11
      
      Name:      example.com
      Address 1: 93.184.216.34
      

Tenga en cuenta que el comando anterior solo prueba la resolución de nombres de dominio dentro del contenedor. Si la configuración de DNS dentro del contenedor es incorrecta o el contenedor no puede acceder al servidor DNS, la resolución del nombre de dominio puede fallar.

Utilice digel comando para realizar la resolución de nombres de dominio

Si nslookupaparece el mensaje de error "bash: nslookup: comando no encontrado" al ejecutar un comando dentro de un contenedor, significa que nslookupel comando no está instalado en el contenedor.

En algunas imágenes base, como Alpine, etc., nslookupes posible que no se incluya el comando. Puede intentar utilizar otros comandos disponibles para probar la resolución de nombres de dominio.

Una alternativa es utilizar digel comando para realizar la resolución de nombres de dominio. El siguiente es digun ejemplo del uso del comando:

  1. Ingrese a la terminal de línea de comando del contenedor.
  2. Dentro del contenedor, ejecute digel comando y especifique el nombre de dominio, por ejemplo:
    dig example.com
    
  3. Si el contenedor puede resolver el nombre de dominio, se mostrará un resultado similar al siguiente:
    ; <<>> DiG 9.10.3-P4-Debian <<>> example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34350
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;example.com.            IN      A
    
    ;; ANSWER SECTION:
    example.com.     604800  IN      A       93.184.216.34
    
    ;; Query time: 2 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Mon May 10 15:32:39 UTC 2021
    ;; MSG SIZE  rcvd: 56
    

Si el comando no está instalado en el contenedor dig, puede intentar usar otros comandos disponibles, como pingo curlpara probar la resolución de nombres de dominio.

Instale el comando dig en el servidor Linux

Para instalar el comando en un sistema Linux dig, puede seguir los pasos a continuación:

  1. Abra una terminal o símbolo del sistema.

  2. Utilice el administrador de paquetes apropiado para su distribución de Linux para instalar digel comando. Los siguientes son comandos de instalación para algunas distribuciones de Linux comunes:

    • Debian o Ubuntu:

      sudo apt-get install dnsutils
      
    • CentOS o RHEL:

      sudo yum install bind-utils
      
    • Fedora:

      sudo dnf install bind-utils
      
    • Arco Linux:

      sudo pacman -S bind-tools
      

    Dependiendo de su distribución, ejecute el comando apropiado para instalar digel comando.

  3. Una vez completada la instalación, puede ejecutar comandos en la terminal digpara realizar la resolución de nombres de dominio. Por ejemplo:

    dig example.com
    

De esta manera, puede utilizar digel comando para realizar la resolución de nombres de dominio en el sistema Linux.

Error "No se puede localizar el paquete dnsutils"

Si dnsutilsencuentra el mensaje de error "No se puede localizar el paquete dnsutils" durante el proceso de instalación, significa que el paquete no está disponible en la fuente de software de la distribución que está utilizando.

dnsutilsEs un conjunto de herramientas de red de uso común que contiene digcomandos para realizar operaciones como la resolución de nombres de dominio.

En algunas distribuciones, dnsutilses posible que tenga otro nombre o que no esté incluido en los repositorios de software predeterminados. Puedes probar las siguientes soluciones:

  1. Actualice la lista de paquetes: ejecute el siguiente comando para actualizar la lista de paquetes e intente la instalación nuevamente dnsutils:

    • Debian o Ubuntu:

      sudo apt update
      
    • CentOS o RHEL:

      sudo yum update
      
    • Fedora:

      sudo dnf update
      
  2. Verifique el nombre del paquete: en algunas distribuciones dnsutilsse llama bind-utils. Intente instalar bind-utils:

    • Debian o Ubuntu:

      sudo apt install bind9-dnsutils
      
    • CentOS o RHEL:

      sudo yum install bind-utils
      
    • Fedora:

      sudo dnf install bind-utils
      
  3. Verifique las fuentes de software: es posible que deba agregar fuentes de software adicionales o actualizar las configuraciones de las fuentes de software para asegurarse de que estén dnsutilsdisponibles. Puede consultar la documentación de su distribución para aprender cómo agregar o actualizar fuentes de software.

Si nada de lo anterior funciona, puede intentar buscar kits de herramientas alternativos para su distribución o comunicarse con la comunidad o los administradores de la distribución para obtener soporte y asesoramiento.

Tenga en cuenta que diferentes distribuciones y versiones pueden tener diferentes nombres de paquetes y configuraciones de fuentes de software.

Vaciar la caché de DNS

Para vaciar la caché de DNS, los pasos específicos dependen del sistema operativo que esté utilizando. Los siguientes son métodos para actualizar la caché DNS de varios sistemas operativos comunes:

  1. Sistema Windows:

    • Abra la ventana del símbolo del sistema (CMD) presionando la tecla Win + R, luego ingrese cmdy presione Enter.
    • En la ventana del símbolo del sistema, ingrese el siguiente comando y presione Entrar:
      ipconfig /flushdns
      
  2. Sistema MacOS:

    • Abra la aplicación Terminal presionando la tecla Comando + barra espaciadora y luego escribiendo "Terminal".
    • En una ventana de terminal, ingrese el siguiente comando y presione Enter:
      sudo killall -HUP mDNSResponder
      
  3. Sistema Linux:

    • Abra la aplicación Terminal.
    • En una ventana de terminal, ingrese el siguiente comando y presione Enter:
      • Ubuntu/Debian:
        sudo systemctl restart systemd-resolved
        
      • CentOS/Fedora:
        sudo systemctl restart NetworkManager
        

Tenga en cuenta que vaciar la caché de DNS puede requerir privilegios de administrador, por lo que en sistemas Windows y macOS es posible que deba ejecutar el comando como administrador o superusuario.

Después de vaciar la caché de DNS, su computadora volverá a consultar el servidor DNS para obtener los últimos resultados de resolución de nombres de dominio.

Pruebe el sitio web de destino usando curl

Puede utilizar curlherramientas de línea de comandos para probar el acceso al sitio web de destino. Aquí hay un curlcomando de ejemplo para acceder al sitio web de destino usando:

curl https://api.weixin.qq.com/cgi-bin/token //替换为你自己解析的域名url

Este comando enviará https://api.weixin.qq.com/cgi-bin/tokenuna solicitud GET e imprimirá la respuesta del servidor a la terminal.

Asegúrese de que su computadora tenga instaladas las herramientas de línea de comando curly pueda ejecutarlas a través de la terminal o el símbolo del sistema.

Después de ejecutar el comando anterior, observe la salida del terminal y verá los resultados de la respuesta del sitio web de destino. Si la respuesta se puede obtener con éxito, significa que se puede acceder normalmente al sitio web de destino.

Supongo que te gusta

Origin blog.csdn.net/gao511147456/article/details/133233228
Recomendado
Clasificación