赞
踩
目录
Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定
docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴)
docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口
docker run -itd --net=host 961769676411
注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的
初识网络模式
#查看网络模式
ip a
ifconfig
#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge
查看网络模式
查看桥接模式下的网络状态
停止容器之后再查看
开启两个容器
再查看
启动一个仅主机模式的容器
查看host模式下的网络状态
避免影响 删掉之前的所有容器
docker rm -f $(docker ps -aq)
再次查看
删除查看的所有容器
docker rm -f $(docker ps -aq)
docker run -di --name tomcat1 -p 8081:8080 f7f730b9e9eb
#--restart=always容器随着Docker引擎启动而启动
docker run -di --name tomcat2 --restart=always -p 8081:8080 f7f730b9e9eb
宿主机映射容器内部的端口
访问一下
如果访问失败,我们可以先检查一下,防火墙的状态,如果是开启的,我们需要把防火墙关闭
查看防火墙状态 systemctl status firewalld
开启/关闭防火墙
#开启防火墙
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#设置开机启动
systemctl enable firewalld.service
查看网络状态
docker run -di --name tomcat3 --net=host --restart=always f7f730b9e9eb
docker run -di --name tomcat5 -v /javaxl/software/mydocker/:/home/javaxl/docker --net=host --restart=always f7f730b9e9eb
docker exec -it t11 /bin/bash
我们是不能访问t11
在使用自定义网络之前
再重启启动t1 此时的IP会发生改变
#创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork#指定IP地址
docker run -it --name tomcat8 --net=mynetwork -v /javaxl/software/mydocker/:/home/javaxl/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash
#查看网络
docker network inspect mynetwork
若是再创建自定义网络的时候报一下的错
Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed : iptables --wait -t nat -I DOCKER -i br-06ef2e8901ba -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
原因:如果在docker服务启动之后,再执行关闭系统防火墙的操作,那后续执行启动docker容器(docker-compose up -d)或者创建docker 网络(docker create network),会出现上面的报错。
解决方法:重启docker服务。
再创建就能成功了
指定IP地址 命令根据自己的需要改
docker run -it --name tomcat8 --net=mynetwork -v /javaxl/software/mydocker/:/home/javaxl/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash
查看网络
发现IP是固定的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。