docker–扩展学习–容器互联–03
1、 介绍
- docker 有一个连接系统,允许将多个容器网络连接在一起,共享连接网络信息。
- docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。
2、启动2个容器
2.1、启动容器centos1
docker run -it --name centos1 -p 8081:8081 centos
对应的容器IP
192.17.0.2
2.2、启动容器centos2
docker run -it --name centos2 -p 8082:8081 centos
对应的容器IP
192.17.0.3
3、容器互联方式
3.1、方式1–通过IP
centos2 连接 centos1,通过ping IP,可以看到容器是可以连接通的
假如centos1容器重启,那么就会重新分配ip地址
所以为了使ip地址变了也可以访问,可以采用 方式2
3.2、方式2–通过容器别名
给容器起一个代号,这样可以直接以代号访问,避免了容器重启ip变化带来的问题
3.2.1、定义
docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE][COMMAND]
3.2.2、验证
# 启动centos3容器,给centos1容器设置别名alias_centos1
docker run -it --link=centos1:alias_centos1 --name centos3 -p 8083:8081 centos
发现通过容器别名访问是可以通的
4、拒绝容器互联
4.1、修改docker启动配置
vim /lib/systemd/system/docker.service
新增内容:–icc=false
ExecStart=/usr/bin/dockerd -H fd:// --icc=false --containerd=/run/containerd/containerd.sock
4.2、重启docker
systemctl daemon-reload
systemctl restart docker
4.3、删除容器,并重新启动
docker rm -f centos1 centos2 centos3
docker run -it --name centos1 -p 8081:8081 centos
docker run -it --name centos2 -p 8082:8081 centos
docker run -it --link=centos1:alias_centos1 --name centos3 -p 8083:8081 centos
4.4、验证
4.4.1、ping IP 不通
4.4.2、ping 容器别名 不通
5、配置 DNS
5.1、修改配置文件方式
vim /etc/docker/daemon.json
增加以下内容来设置全部容器的DNS
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
配置完,需要重启 docker 才能生效
systemctl restart docker
查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:
docker run -it --rm centos:7.0 cat etc/resolv.conf
5.2、手动指定容器的方式
docker run -it --name c3 --rm -h host_c3 --dns=114.114.114.114 --dns-search=test.com centos:7.0
参数说明:
--rm:
容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME:
设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS:
添加DNS服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN:
设定容器的搜索域,当设定搜索域为 test.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.test.com。
查看