Docker网络配置

docker配置ipv4转发

vi /etc/sysctl.conf,添加如下内容:
net.ipv4.ip_forward = 1
systemctl restart network
查看修改结果:
ysctl net.ipv4.ip_forward

docker创建自定义桥接网络,并指定网段:
docker network create --driver=bridge --subnet=172.18.0.0/24 bridge_internet

MACVLAN连接到实际网段:
docker创建macvlan网络,直接与外部网络通信,与宿主同一网段

docker network create -d macvlan --subnet=192.168.120.0/24 --gateway=192.168.120.1 -o parent=eth0 pub_net

docker创建macvlan网络,直接与外部网络通信,使用外部任意vlan

docker network create --driver macvlan --subnet=10.10.0.0/24 --gateway=10.10.0.253 -o parent=eth0.10 macvlan10   #指定vlan id 10

启动容器,并分配IP 192.168.120.29

docker run --net=pub_net --ip=192.168.120.29 -it alpine /bin/sh

macvlan网络在创建时要指定parent.其中parent仅能使用一次,即eth0在创建一个macvlan网络时使用了,则在创建另一个的时候就无法再使用了.

在创建macvlan的时候,如果不指定网段,默认网段为172.18.0.0/16, 此时加入此网络的容器,在同一台主机上时可以互相ping通,无法ping通外部网络,同时加入此网络的容器,创建时不能手工指定ip,仅能使用ipam自动分配.

在使用和主机相同网段的macvlan时,如果在创建容器时不指定ip,则默认ipam从192.168.15.2开始分配,不检查网段内是否已有相同ip,这种情况下会造成容器ip和网络内其他设备ip冲突

参考:

https://www.cnblogs.com/atuotuo/p/7381103.html

https://www.cnblogs.com/lkj371/p/12718140.html

查看docker网络:

docker network ls/rm
docker network inspect bridge_internet

查看宿主机网络:ip a

-p将端口映射到宿主,-P会将端口随机映射到宿主

docker run -d -p 5000:5000 training/webapp python app.py

查看容器的端口映射情况:

docker port container_id
docker port container_id port
原文地址:https://www.cnblogs.com/dreamer-fish/p/15317067.html