13.Docker网络配置与调试

Docker Network配置与调试

查看虚拟网卡

yum install -y bridge-utils
brctl show
ip link show

管理网络命名空间(docker 底层调用实现)

#查看是否有ip命令包
rpm -q iproute
#命名网络空间
ip netns add r1
ip netns add r2
#查看网络命名空间
ip netns list
#在命名空间中执行命令
ip netns exec r1 -a
ip netns exec r1 ipconfig
#创建虚拟网卡对
ip link add r1 veth1.1 type veth peer name veth1.2
#查看网卡
ip link show
#移动虚拟网卡至r1空间
ip link set dev veth1.2 netns r1
#查看本地主机host
ip link show
#查看r1空间内网络
ip netns exec r1 ipconfig -a
#修改r1内名称
ip netns exec r1 ip link set dev veth1.2 name eth0
#查看r1空间内网络
ip netns exec r1 ipconfig -a
#配置主机veth1.1网络
ifconfig veth1.1 10.1.0.1/24 up
#配置r1空间内网络
ip netns exec r1 ifconfig eth0 10.1.0.2/24 up
#查看r1空间内网络
ip netns exec r1 ipconfig
#测试(实现主机与命名空间r1互通)
ping 10.1.0.2
#移动veth1.1到r2命名空间
ip link set dev veth1.1 netns r2
#查看本地网络
ifconfig
#查看r2命名空间
ip netns exec r2 ipconfig -a
#激活r2
ip netns exec r2 ifconfig veth1.1 10.1.0.3/24 up
#查看r2命名空间
ip netns exec r2 ipconfig
#测试(实现命名空间r1与命名空间r2互通)
ip netns exec r2 ping 10.1.0.2

基础命令

#查看docker详细信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker container inspect web1
#查看docker网络
docker network COMMAND
docker network inspect bridge

未指定网络时、默认设置为bridge模式

命令(network) 描述
connect Connect a container to a network 连接一个容器到网络
create Create a network 创建网络
disconnect Disconnect a container from a network 关闭一个容器的网络
inspect Display detailed information on one or more networks 查看docker网络信息描述
ls List networks 列出网络信息
prune Remove all unused networks 删除全部无用网络
rm Remove one or more networks 删除一个或多个网络

指定docker网络

命令(run commond) 描述
--name 指定容器名称
--network 指定容器网卡模式
--dns 指定容器内部dns
--dns-search 指定容器dnssearch
--add-host 添加容器内部host解析
-h 指定容器主机名

实例

#创建指定busybox
docker run --name nginxweb1  #指定容器名称
-it  #交互式
--network bridge  #指定容器网卡模式
--dns 114.114.114.114  #指定容器内部dns
--dns-search gms.io  #指定容器dnssearch
-h web.gms.com #指定容器主机名
--add-host www.gms.com:1.1.1.1  #添加容器内部host解析
--rm busybox:latest  #退出后删除容器

暴露docker

查看容器暴露端口

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

暴露端口

docker run -p

随机映射

#暴露nginx_docker
docker run --name nginxweb1  #指定容器名称
-p 80  #暴露容器80端口、不指定host端口则随机一个host端口
gms/httpd:v1

指定主机地址映射

#暴露nginx_docker
docker run --name nginxweb1  #指定容器名称
-p 172.20.0.67::80  #暴露172.20.0.67主机8080:容器80端口
gms/httpd:v1

指定主机端口映射

#暴露nginx_docker
docker run --name nginxweb1  #指定容器名称
-p 8080:80  #暴露主机8080:容器80端口
gms/httpd:v1

指定主机地址&端口映射

#暴露nginx_docker
docker run --name nginxweb1  #指定容器名称
-p 172.20.0.67:8080:80  #暴露主机8080:容器80端口
gms/httpd:v1

设置进程隔离

利用join container,利用网络共享;相当于宿主机上两个进程(但有各自运行空间,但可进行通信)

设置network共享容器(join container)

#创建busybox1
docker run --name b1 -it --rm busybox
#同一主机上创建busybox2,并加入busybox1网络
docker run --name b2 --network container:b1 -it --rm busybox

本地服务容器化部署

利用host模式,将docker服务直接暴露在宿主机上;减少部署成本

设置host主机模式

docker run --name b2 --network host -it --rm busybox
/# ifconfig
/# echo "hello container" > /tmp/index.html
/# httpd -h /tmp
/# netstat -tnl

自定义docker0网桥属性

修改/etc/docker/daemon.json

{
	"bip":"10.0.0.1/16",	#即bridge ip用于指定docker桥网络,其它选项自动计算(除dns)
	"fixed-cidr": "10.20.0.0/16",  #强制docker运行时使用指定执行驱动器
	"fixed-cidr-v6": "2001:db8::/64",	#强制docker运行时使用指定ipv6执行驱动器
	"mtu": 1500, #网络的最大传输单元
	"default-gateway": "10.20.1.1",	#网关
	"default-gateway-v6": "2001:db8:abcd::89",	#ipv6网关
	"dns":["10.20.1.2","10.20.1.3"]
}

核心选项为bip,即bridge ip用于指定docker桥网络,其它选项自动计算(除dns)

启用远程docker.sock连接

修改/etc/docker/daemon.json

{
	"hosts": ["tcp://0.0.0.0:2375","unix://var/run/docker.sock"]
}

连接远程主机查看docker容器

docker -H 172.20.0.67:2375 images ls
docker --host 172.20.0.67:2375 images ls

添加新docker网桥&指定驱动模式

添加一个新bridge网桥;还可添加overlay、macvlan网络

docker network create -d bridge --subnet "172.26.0.0/16" --gateway "172.26.0.1" gmsbr0

查看

docker network ls

修改名称

ip link set dev br-4e7fd8d225b7 down
ip link set dev br-4e7fd8d225b7 name docker1
ip link set dev docker1 up

busybox1加入docker1网络

docker run --name gmst1 -it --net docker1 busybox:latest

busybox2添加至docker0

docker run --name gmst2 -it --net bridge busybox:latest

测试是否互通

#查看是否开启内核IP地址转换
cat /proc/sys/net/ipv4/ip_forward
1
#被防火墙规则拦截
iptables -vnL

原文地址:https://www.cnblogs.com/Gmiaomiao/p/14290257.html