Docker自定义网络

简介: Docker自定义网络

自定义网络

查看所有的docker网络
[root@localhost ~] # docker network ls
NETWORK ID     NAME                                  DRIVER    SCOPE
f0252b7d323e   bridge                                bridge    local
4d03c52372e1   host                                  host      local
898465300bee   none                                  null      local
983a1a9b2f0f   x34-arbitrary-file-deletion_default   bridge    local

网络模式
1、Bridge : 桥接 docke 0.1 0.2 0.3 都通过桥转发(默认使用模式)
2、none :不配置网络
3、host : 主机模式,和宿主机共享网络
4、container : 容器网络连通(局限性大)
测试
清空网络容器

[root@localhost ~]#docker rm -f $(docker ps -aq)

image.png

# 直接启动的命令 --net bridge, 这个就是docker0
[root@localhost ~] # docker run -d -P --name tomcat01  tomcat   # 原来的启动方式
[root@localhost ~] # docker run -d -P --name tomcat01 --net bridge tomcat   # 默认


# docker0特点:默认,域名不能访问, --link可以打通连接
# 我们可以自定义网络
# --driver bridge
# --subnet 192.168.0.0/24
# --gateway 192.168.0.1
[root@localhost ~]# docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet
3fa16a661c63da775336a98aadba1447d69e01009f5afbf2e38f2bbb0cdf669d

[root@localhost ~]# docker network ls
NETWORK ID     NAME                                  DRIVER    SCOPE
f0252b7d323e   bridge                                bridge    local
4d03c52372e1   host                                  host      local
3fa16a661c63   mynet                                 bridge    local
898465300bee   none                                  null      local
983a1a9b2f0f   x34-arbitrary-file-deletion_default   bridge    local

# 查看一下自己创建的网络配置信息
[root@localhost ~]# docker network inspect 3fa16a661c63
[
    {
   
        "Name": "mynet",
        "Id": "3fa16a661c63da775336a98aadba1447d69e01009f5afbf2e38f2bbb0cdf669d",
        "Created": "2022-01-10T08:18:36.27124654-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
   
            "Driver": "default",
            "Options": {
   },
            "Config": [
                {
   
                    "Subnet": "192.168.0.0/24",   # 子网
                    "Gateway": "192.168.0.1"     # 网关
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
   
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
   },
        "Options": {
   },
        "Labels": {
   }
    }
]

启动一个容器,网络配置是我们自己创建的网络

# 启动两个容器,网络配置mynet
[root@localhost ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
5a85dd02380c7c62714c3fe64e959ad3f1d98d33e44d61e212c3e864e229f927
[root@localhost ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
a207c17e91dbde264af88b999cd12497d8a649692d5c96d081c8bd09547bb04b

# 查看一下自己创建的网络配置信息,发现两个容器的网络配置都已配置好
[root@localhost ~]# docker network inspect mynet
[
    {
   
        "Name": "mynet",
        "Id": "3fa16a661c63da775336a98aadba1447d69e01009f5afbf2e38f2bbb0cdf669d",
        "Created": "2022-01-10T08:18:36.27124654-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
   
            "Driver": "default",
            "Options": {
   },
            "Config": [
                {
   
                    "Subnet": "192.168.0.0/24",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
   
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
   
            "5a85dd02380c7c62714c3fe64e959ad3f1d98d33e44d61e212c3e864e229f927": {
   
                "Name": "tomcat-net-01",
                "EndpointID": "3efde84d7d3d212a6d4a464467a7baf08a4577036b9c29c116f4a6977451190c",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/24",     # 容器 01 网络配置
                "IPv6Address": ""
                },
            "a207c17e91dbde264af88b999cd12497d8a649692d5c96d081c8bd09547bb04b": {
   
                "Name": "tomcat-net-02",
                "EndpointID": "1d055768a18f5d2f21b14a90a8182f103cd5d33234918b9acfcca87204545825",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/24",  # 容器 02 网络配置
                "IPv6Address": ""
            }
        },
        "Options": {
   },
        "Labels": {
   }
    }
]


# 再次测试ping连接
[root@localhost ~]# docker exec -it tomcat-net-01 ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.100 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.072 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.088 ms

# 现在不使用--link,也可以ping容器名字
[root@localhost ~]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.136 ms

我们自定义的网络docker都已经帮我们维护好了对应的关系,推荐使用这样的方式!
好处:

Redis – 不同的集群使用不同的网络,保证集群都是安全和健康的 例如:192.168.0.1/24

MySQL-- 不同的集群使用不同的网络,保证集群是安全和健康的 例如:192.168.0.2/24

网络连通

# 查看docker network 帮助文件
[root@localhost ~]# docker network --help

Usage:  docker network COMMAND

Manage networks

Commands:
  connect     Connect a container to a network   # 连通一个容器到一个网络,结合下图 容器tomcat-01到mynet网络
  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.

image.png

# 测试tomcat-01容器连通mynet网络
# 执行docker network inspect mynet,发现容器tomcat-01加在了mynet网络
[root@localhost ~]# docker network connect mynet tomcat-01
# 再次检测一下mynet配置信息,结果如图:
# 发现tomcat-01容器有两个IP地址{
   172.17.0.2/16  192.168.0.4/24},类似于阿里云服务:公网ip 私网ip
[root@localhost ~]# docker network inpsect mynet

image.png

# 测试tomcat-01 ping tomcat-net-01, 测试成功ok
[root@localhost ~]# docker exec -it tomcat-01 ping tomcat-net-01
# tomcat-02 依然ping不通,但是加入mynet就可以
[root@localhost ~]# docker network connect mynet tomcat-02

image.png

结论

如果跨网段连接,需要使用docker network connect命令连通!✌️

实战:部署Redis集群
m : master s : slave

image.png

首先移除所有容器

[root@localhost ~]# docker rm -f $(docker ps -aq)
相关文章
|
2月前
|
存储 安全 数据安全/隐私保护
Docker进阶:网络配置与服务编排
【10月更文挑战第17天】随着微服务架构的流行,Docker作为容器化技术的领导者,在企业级应用部署中扮演着重要角色。掌握Docker的高级特性,特别是网络配置和服务编排,对于构建高效、可维护的分布式系统至关重要。本文将深入探讨Docker的网络配置选项、容器间通信机制、端口映射技术以及使用Docker Compose进行多容器应用部署的最佳实践。
62 8
|
1天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
78 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
13天前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
27 6
|
17天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
50 7
|
23天前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
42 5
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
43 5
|
2月前
|
调度 Docker 容器
docker swarm创建覆盖网络
【10月更文挑战第16天】
37 5
|
2月前
|
负载均衡 应用服务中间件 数据安全/隐私保护
docker swarm 创建 Swarm 模式下的网络
【10月更文挑战第14天】
53 6
|
2月前
|
负载均衡 网络协议 关系型数据库
docker swarm 使用网络启动服务
【10月更文挑战第15天】
35 4
|
2月前
|
应用服务中间件 nginx Docker
docker swarm创建覆盖网络
【10月更文挑战第14天】
25 3