一.容器的网络通信:docker是通过端口映射,将容器内的服务提供给外部网络,以及通过容器互联系统让多个容器之间进行通信
二.端口映射实现访问容器
1.从外部访问容器应用
如果容器启动的时候不指定对应的参数,容器外部是无法访问到容器内部的服务的。
2.执行命令:
a)使用参数-P(大写):
b)使用参数-p(小写):
支持的格式
a)ip地址:本地端口port:容器端口 -------->映射到指定地址的指定端口
b)ip地址::容器端口 ------------->映射到指定地址的任意端口
c)本地端口port:容器端口portA -------->指定本地固定端口port映射到容器的固定端口portA
注意:
可以使用参数-p指定多个端口的映射
可以使用udp标记来指定upd端口: -p 5000:5000:5000/udp
c.查看端口映射配置:docker port 容器名称/容器ID
2.容器互联实现容器通信
要求:
a.连接系统依据容器的名称来执行,所以容器必须要有自定义名称
b.自定义名称容易记,还能见名知意。(使用参数 --name 容器名称)
c.容器名称也是唯一的,不能够重复。
1)操作流程:使用参数(--link)
2)查看容器信息:
3)docker通过两种方式为容器公开关联:
a.环境变量env(apache容器中记录mysql容器信息):
b.hosts信息:
c.测试连通性:
1)首先保证两个容器中安装了ping和ifconfig命令:
apt-get install net-tools 安装ifconfig命令
apt-get install iputils-ping 安装ping命令
2)ping:
可以看出现在是不通的,解决方法就是:
1.直接关掉宿主主机的iptables: servcie iptables stop
2.添加下面的规则就可以了:
iptables -I -s 172.17.0.0/16 FORWARD -j ACCEPT