Docker网络

Docker网络

[root@localhost /]# docker network help

Usage:  docker network COMMAND

Manage networks

Commands:
  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

Run 'docker network COMMAND --help' for more information on a command.

Docker0

清空所有环境,以方便测试

image-20201228191235484

原理

1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术!

我们发现这个容器带来网卡,都是一对对的
evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连
正因为有这个特性,evth-pair充当一个桥梁,连接各种虚拟网络设备的
Openstac,Docker容器之间的连接,oVs的连接,都是使用evth-pair技术

Docker0网络模型

img

小结

Docker使用的是Linux的桥接,宿主机zhong是一个Docker容器的网桥docker0

docker中的所有网络接口都是虚拟的,虚拟的转发效率高

只要容器删除,对应网桥也会自动删除

image-20201228192423850

--link技术

docker run -d -P --name tomcat03 --link tomcat02  tomcat   # 这样可以tomcat03可以ping通tomcat02  反向不可以

就是在hosts文件中添加了一条映射

[root@shop /]# docker exec -it tomcat03 cat /etc/hosts
127.0.0.1localhost
::1localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0ip6-mcastprefix ff02::1ip6-allnodes ff02::2 ip6-allrouters
172.18.0.3  tomcat02 312857784cd4
172.18.0.4 5ca72d80ebb0

自定义网络

查看所有的docker网络

image-20201228193732812

网络模式:

  • bridge 桥接(默认)
  • none 不配置网络
  • host 宿主机模式,共享宿主机网络
  • container:容器网络连通!(用的少!局限性很大)

创建网络

#我们直接启动的命令会有一个默认参数  --net bridge
docker run -d -P --name tomcat01 --net bridge tomcat

#自定义一个网络
[root@localhost /] docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
e27aab4b501fbf7cca77d81dcb49876b62e386f3901ebf90b831f72f73d46a04
[root@localhost /] docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
ffd0e491486c   bridge    bridge    local
fb1f1bc9e3cf   host      host      local
e27aab4b501f   mynet     bridge    local
f6f0f3681dae   none      null      local

网络联通

[root@localhost /]# docker network connect --help

Usage:  docker network connect [OPTIONS] NETWORK CONTAINER

Connect a container to a network

Options:
      --alias strings           Add network-scoped alias for the container
      --driver-opt strings      driver options for the network
      --ip string               IPv4 address (e.g., 172.30.100.104)
      --ip6 string              IPv6 address (e.g., 2001:db8::33)
      --link list               Add link to another container
      --link-local-ip strings   Add a link-local address for the container

docker connect  网络名称  容器名   # 将容器添加到网络中
docker connect  mynet    nginx01

实战 部署Redis集群

image-20201228201105599

# 创建网卡
docker network create redis --subnet 172.38.0.0/16
#创建六个redis配置
for port in s(seq 1 6);
do
mkdir -p /mydata/redis/node-${port}/conf 
touch/mydata/redis/node-${port}/conf/redis.conf 
cat << EOF > /mydata/redis/node-s{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 port in s(seq 1 6);
do
docker run -p 637${port}:6379 -p 1637${port}:16379--name redis-${port}  
-v /mydata/redis/node-${port}/data:/data 
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf 
-d--net redis--ip 172.38.0.1s{port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;
done

# 单个启动01
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

# 单个启动02
docker run-p 6372:6379-p 16372:16379 --name redis-2 
-v /mydata/redis/node-2/data:/data 
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf  
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

# 进入其中一台机器
docker exec -it redis-1 /bin/sh
# redis创建集群
redis-cli --cluster create 172.38.0.11:6379  172.38.0.12:6379  172.38.0.13:6379  172.38.0.14:6379   172.38.0.15:6379  172.38.0.16:6379  --cluster-replicas 1
# 连接集群
redis-cli -c

SpringBootBoot微服务打包镜像

1、构架springboot项目2、打包应用
3、编写dockerfile
4、构建镜像
5、发布运行!!

FROM java:8
COPY *. jar /app. jar CMD ["--server. port=8080"]
EXPOSE 8080
ENTRYPOINT  ["java","-jar","/app.jar"]
原文地址:https://www.cnblogs.com/cuianbing/p/14468950.html