Docker DNS issue on CentOS7
DNS name resolution doesn’t work in Docker containers
The case of the following production server environment.
DNS name resolution doesn’t work, when it access a endpoint outside docker container. One of the following two ways that sets up dns on docker container resolves the issue.
Set up dns in “docker-compose.yml" directly
update docker-compose.yml with the following.
version: '3.3' services: app: restart: always dns: 18.104.22.168
Mounting resolv.conf file to container
You create the following resolv.conf file, then you mount the flie at /etc/resolv.conf inside the container.
search google.internal nameserver 22.214.171.124 options ndots:0
DNS resolution doesn’t work in Docker after reboot CentOS
Despite taking the above two ways, sometimes DNS doesn’t resolve in Docker after reboot server.
It is necessary running the docker.service after network-online.target service. The following is the default [Unit] in docker.service.
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com BindsTo=containerd.service After=network-online.target firewalld.service containerd.service Wants=network-online.target Requires=docker.socket
But sometimes docker.service begin to run before the network setting on network-online.target is completed. I found the solution that include the following in the [Service].
[Service] ExecStartPre=/bin/sleep 5
This is unreasonable way waiting 5s. But it work correctry.