
77: eth0@if78: mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
vethc-pair技术,充当桥梁。

docker 本身提供了两种网络联通的方法。
- 一种是NAT端口多路复用(端口映射),通过-p/P参数,docker网络通过映射到宿主机网络的某个端口,使得宿主机外部的机器能够通过宿主机ip访问到docker中的服务。
- 另一种是Brige桥接模式,将两个
所有容器在不指定网络的情况下,使用docker0的地址做路由。
docker中的所有网络接口都是虚拟的,转发效率很高。
容器删除,对应的网桥一对就没了。


–link可以通过名称访问具体的docker
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
ls List networks
prune Remove all unused networks
rm Remove one or more networks

直接启动默认参数--net bridge
➜ notes git:(master) ✗ docker run -d -P --name tomcat01 --net bridge tomcat
创建容器网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看自己创建的网络
docker network inspect mynet
创建容器加入容器网络
docker run -d -P --name tomcat01 --net mynet tomcat
能够将容器加入到网络中
docker network connnet mynet tomcat01
➜ notes git:(master) ✗ docker network inspect mynet
[
{
"Name": "mynet",
"Id": "343a1bc0691ca6598e028c517613aba3317ee3267f5febd68f88f9d50f5f98c2",
"Created": "2022-10-11T14:41:58.831548151Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]

for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
for i in(1..6);
do
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v ~/mydata/redis/node-1/data:/data \
-v ~/mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","jar","/app.jar"]