- 允许所有容器互联 (docker的默认情况)
- 拒绝容器间互联
- 允许特定容器间的连接
环境准备
用于测试的Docker镜像Dockerfile:
cd /root/dockerfile/df_test
vim Dockerfile
# Container connection test FROM ubuntu:14.04 RUN apt-get install -y ping RUN apt-get update RUN apt-get install -y nginx RUN apt-get install -y curl EXPOSE 80 CMD /bin/bash
Dockerfile中安装了三个程序 ping、nginx、curl ,ping 和 curl 都是用来测试网络连接的,nginx 用来提供默认的网络服务,而暴露的 80 端口也是网络服务使用的端口,在这个镜像运行时会使用 /bin/bash 作为启动命令。
根据Dockerfile文件创建镜像:
docker build -t dormancypress/cct . —— 镜像的名字为 dormancypress/cct
以上测试镜像就已经创建好了,环境准备完成。
允许所有容器间互联
介绍docker 容器互联的默认方式:
在同宿主机下docker容器是通过虚拟网桥进行连接的,在默认情况下,在同一宿主机中运行的docker容器都是可以互相连接的
docker提供了一个容器间互相连接的选项:
--icc=true 默认
默认值true就代表着docker允许容器的互相连接
演示:
启动两个容器来验证容器间的连接
启动第一个容器:
docker run -it --name cct1 dormancypress/cct —— 因为我在镜像的构建中已经指明了镜像在运行时使用的启动命令,镜像名为dormancypress/cct ,容器名为 cct1
在容器中启动nginx服务,使用ctrl+p ctrl+q 退出,确保容器一直运行
在启动第二个容器:
docker run -it --name cct2 dormancypress/cct
查看cct2上的ip —— ifconfig
ctrl+p ctrl+q 退出 cct2 容器
进入cct1容器:查看 cct1 容器的 ip
docker attach cct1
使用ping命令来查看cct1 容器与cct2容器是否能连接
在cct1上执行ping命令:172.17.0.8是cct2 的ip地址 ,cct1的ip地址是172.17.0.7
可以看到在cct1可以ping通cct2;ctrl+p ctrl+q 退出容器
连接到cct2上:
docker attach cct2