Docker Network

Docker网络(Docker Network)是Docker容器之间和容器与主机之间通信的基础架构。它允许你创建和管理容器之间的通信通道,以及容器与主机之间的通信。Docker提供了不同类型的网络,以满足各种应用场景的需求。

一、常见的Docker网络概念和命令:

1. **默认网络**:当你安装Docker时,它会自动创建一个默认网络,通常命名为`bridge`。容器默认会连接到这个网络,允许它们互相通信。

2. **自定义网络**:你可以创建自定义网络以便更好地控制容器之间的通信。使用`docker network create`命令创建自定义网络,例如:

   ```

   docker network create mynetwork

   ```

3. **连接容器到网络**:使用`docker network connect`命令将容器连接到网络,例如:

   ```

   docker network connect mynetwork container_name

   ```

4. **查看网络信息**:使用`docker network ls`命令列出可用的Docker网络,以及`docker network inspect`命令查看特定网络的详细信息。

   ```

   docker network ls

   docker network inspect mynetwork

   ```

5. **删除网络**:使用`docker network rm`命令删除不再需要的网络。

   ```

   docker network rm mynetwork

   ```

6. **连接到主机网络**:有时候,你可能需要让容器直接连接到主机网络,以便与主机上的服务通信。可以使用`--network host`选项启动容器,使其共享主机网络。

   ```

   docker run --network host my_container

   ```

7. **多网络模式**:容器可以连接到多个网络,这在一些复杂的应用场景中非常有用。你可以使用`docker network connect`命令为容器添加额外的网络连接。

这些是Docker网络的基本概念和命令。通过使用Docker网络,你可以更好地控制容器之间的通信,以满足应用程序的要求。不同类型的网络适用于不同的使用情景,可以根据需要进行选择和配置。

二、网络机制

docker在启动时,会产生三种网络机制:bridge、host、none。

1. bridge模式

该模式下docker中的容器不会产生一个公有IP,只有宿主机可以直接访问容器,此时对外部主机是不可见的。但容器可以通过宿主机的NAT规则访问外网。

创建了三个容器,没有指定network,因此使用了默认的network(即bridge)

通过docker inspect micro-1 micro-2 micro-3,可见如下:

2. host模式

 该模式下可以让容器共享宿主机的网络,好处在于可以直接与外部主机进行通信,但此时容器也缺乏隔离性,同时在使用时,对于同一台宿主机而言,相同容器的配置(端口,ip等)会产生冲突。

3. none模式

禁用容器的IP地址,此时容器有很好的隔离性,一般用于产生一些特殊的认证等。

三、自定义网络

首先先来了解下docker中的IP地址分配规则:docker中分配IP地址是根据一开始创建的docker桥接网卡有关系的,在创建时会产生一个地址段,当新的容器启动时,会根据以有的地址进行自增分配(增量为1),当某一容器关闭时,会自动回收,等待下一次的分配。

  三种驱动:

  • Bridge(自带dns解析功能)
  • overlay(用于跨主机网络,集群访问,应用层通信)
  • macvlan(用于跨主机网络,集群访问,物理层通信)

1. 创建自定义网络

##创建自定义网络

[root@server1 ~]# docker network create -d bridge mynet1    ##-d 指定模式(默认桥接)

##查看自定义网络信息

[root@server1 ~]# docker inspect mynet1

##查看网络

[root@server1 ~]# docker network ls

##网络删除

docker network rm mynet1

##使用自定义网络

[root@server1 ~]# docker run -d --name micro_mynet1-1 --network=mynet1 micro

2. 自定义网段、网关

##创建自指定网断和网关

[root@server1 ~]# docker network create -d bridge --subnet 172.30.0.0/24 --gateway 172.30.0.1 mynet2

##查看当前网络

[root@server1 ~]# docker network ls

##使用自定义网络启动容器

[root@server1 ~]# docker run -d --name micro_mynet2 --network=mynet2 -p 8084:8080 micro

##指定固定IP进行网络容器开启

[root@server1 ~]#  docker run -d --name micro_mynet2 --network=mynet2  --ip=172.30.0.30  -p 8085:8080 micro

【注】 在指定IP时,只能使用自定义的网络进行指定。

四、容器间网络通信

1.同一网段下容器间通信(可相互访问)

查看网关和IP

进入容器micro_mynet2,访问micro_mynet2-2

进入容器micro_mynet2-2,访问micro_mynet2

2.不同网段下容器通信(不能相互通信)

查看网关和IP

进入容器micro_mynet1-1,访问micro_mynet2(无返回结果)

3.双网卡实现不同网段通信

查看容器micro_mynet2的网关

连接网关mynet3到容器micro_mynet2上

进入容器micro_mynet2,访问micro_mynet3

进入容器micro_mynet3,访问micro_mynet2

参考资料: 如何创建Docker中的网络_docker network create-CSDN博客
  • 33
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值