Docker高级网络配置-配置 DNS

Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件。
在容器中使用 mount 命令可以看到挂载信息:

$ mount
...
/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
tmpfs on /etc/resolv.conf type tmpfs ...
...

这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 dns 配置通过 /etc/resolv.conf文件立刻得到更新。
如果用户想要手动指定容器的配置,可以利用下面的选项。

-h HOSTNAME or –hostname=HOSTNAME 设定容器的主机名,它会被写到容器内的 /etc/hostname 和/etc/hosts 。但它在容器外部看不到,既不会在 docker ps 中显示,也不会在其他的容器的/etc/hosts 看到。

–link=CONTAINER_NAME:ALIAS 选项会在创建容器的时候,添加一个其他容器的主机名到 /etc/hosts文件中,让新容器的进程可以使用主机名 ALIAS 就可以连接它。

–dns=IP_ADDRESS 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
–dns-search=DOMAIN 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索host,还会搜索 host.example.com 。 注意:如果没有上述最后 2 个选项,Docker 会默认用主机上的 /etc/resolv.conf 来配置容器。

Docker入门教程
Docker简介 Docker基本概念 Docker安装
什么是Docker i.镜像 使用Debian操作系统安装Docker
为什么要用Docker ii.容器 使用CentOS操作系统安装Docker
iii.仓库 使用Ubuntu操作系统安装Docker
Docker images镜像详细介绍 Docker容器 Docker仓库
获取Docker images Docker容器启动 Docker Hub
查找Docker images Docker容器新建 私有仓库
下载Docker images Docker容器终止 Docker配置文件
创建我们自己的Docker images Docker容器进入容器
Docker容器导出和导入
Docker容器删除
Docker数据管理 Docker网络 Docker高级网络配置
数据卷容器 外部访问容器 快速配置指南
数据卷备份、恢复、迁移 容器互联 配置 DNS
容器访问控制
端口映射实现
配置 docker0 网桥
自定义网桥
实例:创建一个点到点连接
Docker安全 Dockerfile Docker底层实现
i. 内核名字空间 i. 基本结构 i. 基本架构
ii. 控制组 ii. 指令 ii. 名字空间
iii. 服务端防护 iii. 创建镜像 iii. 控制组
iv. 内核能力机制 iv. 联合文件系统
v. 其它安全特性 v. 容器格式
vi. 总结 网络
Docker实战案例
使用 Supervisor 来管理进程
创建 tomcat/weblogic 集群
多台物理主机之间的容器互联
标准化开发测试和生产环境
K8S中文社区微信公众号
分享到:更多 ()