Docker 学习笔记 - Bridge 网络

Docker的网络可以分为 Bridge, Host, Overlay, None 和 Macvlan。其中,默认的类型为Bridge 类型。 下面来看看几个常见的命令和配置。

和虚拟机,宿主机的网络关系类似,容器的宿主上也可以有不同的网络。相同的网络上的容器可以互相通信。

Docker 学习笔记 - Bridge 网络

例1

创建一个Bridge的网络,指定subnet和gateway

docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 br02

创建以后查看一下,发现我们的宿主机上多了一个网络接口,刚好是我们的网关地址

Docker 学习笔记 - Bridge 网络

查看一下这个网络的具体内容

Docker 学习笔记 - Bridge 网络

例2

首先删除之前的网络,然后创建一个新的,这一次在例1的基础上还指定了 ip-range和 label

docker network prune
docker network create --subnet 10.1.0.0/16 --gateway 10.1.0.1 \
--ip-range=10.1.4.0/24 --driver=bridge --label=host4network br04

Docker 学习笔记 - Bridge 网络

在我们的网络上创建一个新的容器


docker container run --name network-test01 -it --network br04 centos /bin/bash

然后安装网络工具

yum update -y
yum install -y net-tools

然后查看一下地址

Docker 学习笔记 - Bridge 网络

查看一下网关

netstat -rn

Docker 学习笔记 - Bridge 网络

查看一下DNS

cat /etc/resolv.conf

Docker 学习笔记 - Bridge 网络

例3

分配一个指定的IP地址给容器

docker container run -d --name network-test02 --ip 10.1.4.102 --network br04 nginx

Docker 学习笔记 - Bridge 网络

例4

在一个网络中连接2个容器

首先创建一个localhost的网络

docker network create -d bridge --internal localhost

然后创建一个新的Mysql容器在这个网络上

<br/>docker container run -d --name test_mysql \<br/>-e MYSQL_ROOT_PASSWORD=P4sSw0rd0 \<br/>--network localhost mysql:5.7<br/>

Docker 学习笔记 - Bridge 网络

创建一个新的容器在Bridge 网络上

<br/>docker container run -it --name ping-mysql \<br/>--network bridge \<br/>centos<br/>

这个时候他没法ping 通的,因为他属于一个不同的网络

Docker 学习笔记 - Bridge 网络

但是如果把他加入我们的localhost网络,就可以互相通信了

docker network connect localhost ping-mysql

Docker 学习笔记 - Bridge 网络

如果查看一下,可以看见他的确属于两个网络了
docker container inspect ping-mysql

Docker 学习笔记 - Bridge 网络

例5

我们在我们的localhost网络里面创建一个nginx的容器

docker container run -d --name private-nginx -p 8081:80 --network localhost nginx

发现他从外部是无法访问的
Docker 学习笔记 - Bridge 网络

但是可以从内部访问

Docker 学习笔记 - Bridge 网络

猜你喜欢

转载自blog.51cto.com/beanxyz/2676182