How can you make the Docker container use the host machine's '/etc/hosts' file?

后端 未结 11 1795
夕颜
夕颜 2020-12-23 11:21

I want to make it so that the Docker container I spin up use the same /etc/hosts settings as on the host machine I run from. Is there a way to do this?

I

11条回答
  •  旧巷少年郎
    2020-12-23 12:03

    The host machine's /etc/hosts file can't mount into a container. But you can mount a folder into the container. And you need a dnsmasq container.

    1. A new folder on host machine

       mkdir -p ~/new_hosts/
      
       ln  /etc/hosts ~/new_hosts/hosts
      
    2. mount the ~/new_hosts/ into container

       docker run -it -v ~/new_hosts/:/new_hosts centos /bin/bash
      
    3. Config dnsmasq use /new_hosts/hosts to resolve name.

    4. Change your container's DNS server. Use the dnsmasq container's IP address.

    If you change the /etc/hosts file on the host machine, the dnsmasq container's /new_hosts/hosts will change.

    I found a problem:

    The file in dnsmasq container /new_hosts/hosts can change. But the new hosts can't resolve. Because dnsmasq use inotify listen change event. When you modify a file on the host machine. The dnsmasq can't receive the signal so it doesn't update the configuration. So you may need to write a daemon process to read the /new_hosts/hosts file content to another file every time. And change the dnsmasq configuration to use the new file.

提交回复
热议问题