Docker容器互联
简介:docker可以定义一个连接系统将多个容器都连接在一起,共享连接信息。docker链接会创建一个父子关系,其中父容器可以看到子容器的信息。
新建网络
使用命令docker network ls
来查看当前已有的docker网络。
使用命令docker network create -d bridge <name>
来创建一个新的docker网络。
参数说明:
- -d:指定docker网络类型,有bridge、overlay等
连接容器
1.创建一个容器testa并连接到新建的my-net网络。
docker run -itd --name testa --network my-net ubuntu /bin/bash
2.创建一个容器 testb 加入到新建的 my-net 网络。
docker run -itd --name testb --network my-net ubuntu /bin/bash
3.通过 ping 来证明 testa 容器和 testb 容器建立了互联关系。
首先,需要在容器内安装ping
命令
apt-get update # 读取所有源的软件列表,需要联网下载,作用是激活和更新源
apt install iputils-ping # 安装ping命令
在容器 testa 中 ping testb
在容器 testb 中 ping testa
配置DNS
设置全部容器的DNS
可以在宿主机的/etc/docker/daemon.json
文件中添加以下内容来设置全部容器的DNS。
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
注:配置完需要重启docker服务(systemctl restart docker
)才会生效,启动容器的DNS会自动配置为 114.114.114.114 和 8.8.8.8
示例:启动一个容器并查看该容器的DNS是否生效。
docker run -it --name testc ubuntu cat etc/resolv.conf
设置指定容器的DNS
docker run -it --rm -h my_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
参数说明:
- -h :设定容器的主机名,会被写入到容器内的 /etc/hostname 和 /etc/hosts。
- –dns=ip_address:添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
- –dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 test.com 时,在搜索一个名为 hostname 的主机时,DNS 不仅搜索 hostname,还会搜索 host.test.com。
注:如果容器启动时没有指定–dns和–dns-search,docker默认使用宿主机上/etc/resolv.conf来配置容器的DNS