• 基础信息

操作系统:CentOS Linux release 7.2.1511 (Core)

Docker版本:Server Version: 1.9.1

  • 拉取基础镜像

Rhel:7.2 为直接从docker HUb中pull下来的镜像

  • 场景1

主机配置文件

[root@docker-01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.1.2

启动容器

[root@docker-01 ~]# docker exec -it a5028d60979f /bin/bash
[root@a5028d60979f /]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.1.2
[root@a5028d60979f /]#
  • 场景2

主机配置文件

[root@docker-01 ~]# cat /etc/resolv.conf
[root@docker-01 ~]#

启动容器

[root@docker-01 ~]# docker exec -it a5028d60979f /bin/bash
[root@a5028d60979f /]# cat /etc/resolv.conf nameserver 8.8.8.8
nameserver 8.8.4.4
[root@a5028d60979f /]#
  • 结论

当宿主机resolv.conf文件不为空,容器启动命令中无resolv.conf文件的操作时,则容器默认使用宿主机的resolv.conf文件的内容

当宿主机resolv.conf文件为空,容器启动命令中无resolv.conf文件的操作时,则容器会添加8.8.8.8和8.8.4.4到resolv.conf文件中

  • 使用

  1. 修改宿主机resolv.conf文件,添加容器需要的内容(此方法仅使用于宿主机启动的容器均使用相同dns)

[root@docker-01 ~]# cat /etc/resolv.conf
nameserver 1.1.1.1
nameserver 2.2.2.2
[root@docker-01 ~]#

  2. 修改dockerfile文件,增加容器需要的dns到resolv.conf文件中

[root@docker-01 testDNS]# cat dockerfile
from rhel:7.2
maintainer zcheck add start.sh /tmp/
workdir /tmp
run chmod 777 start.sh cmd /tmp/start.sh
[root@docker-01 testDNS]# cat start.sh
#!/bin/bash echo -e 'nameserver 1.1.1.1' > /etc/resolv.conf
echo -e 'nameserver 2.2.2.2' >> /etc/resolv.conf while true;do
echo 'Hello'
sleep 2
done

文档资料

翻译:

关于DNS设置,在没有--dns=IP_ADDRESS...,--dns-search=DOMAIN...或--dns-opt=OPTION...选项时,docker会为每个容器创建和主机一样的/etc/resolv.conf文件(其中的docker守护进程运行)。当创建容器的/etc/resolv.conf,守护进程从主机的原始文件中过滤出所有本地主机IP地址条目。在过滤之后,如果nameserver容器/etc/resolv.conf文件中没有剩余条目,则守护进程将公共Google DNS名称服务器(8.8.8.8和8.8.4.4)添加到容器的DNS配置中,即写入/etc/resolv.conf文件中。如果守护程序启用了IPv6,则还会将添加公共IPv6 Google DNS名称服务器(2001:4860:4860 :: 8888和2001:4860:4860 :: 8844)。

docker daemon会监视主机的DNS配置修改,当主机文件更改时,resolv.conf与主机匹配的所有停止的容器将立即更新为最新的主机配置。

详见原文:https://docs.docker.com/v1.9/engine/userguide/networking/default_network/configure-dns/

最新文章

  1. 图片访问实时处理的实现(nodejs和php)
  2. 边工作边刷题:70天一遍leetcode: day 84-3
  3. C# 无边框窗体的最小化问题
  4. netty websocket协议开发
  5. MVC 自定义AuthorizeAttribute实现权限管理
  6. Dllimport函数時无法在Dll中找到的入口点
  7. PHP输出中文乱码的问题(转)
  8. apache 开启压缩功能
  9. 转:Http头介绍:Expires,Cache-Control,Last-Modified,ETag
  10. set、env、export差分
  11. tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space
  12. 《剑指offer》数组中的逆序对
  13. python三大神器之virtualenv
  14. System.Collections 学习
  15. spring cloud shutdown graceful 优雅停机
  16. 【转】Ubuntu12.04 LTS下环境变量设置
  17. 方法执行一次js
  18. pyqt加载图片
  19. [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器
  20. S3C2440的存储器映射(27根地址线如何寻找1G的地址)

热门文章

  1. spring bean post processor
  2. 手把手教你部署 Redis Cluster
  3. python编程从入门到实践笔记
  4. LESS 原理,一款css的预处理程序Less的使用
  5. Java实现第十一届蓝桥杯JavaB组 省赛真题
  6. Linux终端音乐播放器cmus攻略: 操作歌单
  7. appium移动端自动化测试环境搭建windows-appium-android
  8. ::before 和 :after 中双冒号和单冒号有什么区别?
  9. 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!
  10. LNMP安装composer install时出现Warning: putenv()