Docker之网络

1.docker原生网络
docker安装时会创建一个名为docker0的linux birdge,新建的容器会自动连接到这个接口
在这里插入图片描述

2.none模式,该模式禁用网络接口,仅保留本机回环接口
[root@server1 ~]# docker run -it --name vm1 --network none ubuntu
在这里插入图片描述

3.自定义网络(相同容器之间是可以互同的)

[root@server1 ~]# docker network create my_net1
289c1f4a35fc089377d6daa97476954d755c3351007b45ae0e15184def70f7e5
[root@server1 ~]# docker run -it --name vm1 --network my_net1 ubuntu
[root@server1 ~]# docker run -it --name vm2 --network my_net1 ubuntu
在这里插入图片描述
创建vm1后按“ctrl+p+q”使其挂在后台运行,然后创建vm2
在这里插入图片描述
同样退出后台运行(也可以直接测试能否ping通)
[root@server1 ~]# docker start vm1
[root@server1 ~]# docker container attach vm1
在这里插入图片描述

4.自己定义网段创建
在这里插入图片描述
5.自定义ip创建
[root@server1 ~]# docker run -it --name vm3 --network my_net2 --ip 172.22.0.10 ubuntu
在这里插入图片描述

6.不同容器间网络的连接
my_net1运行vm5
在这里插入图片描述
my_net2运行vm6
在这里插入图片描述
两个网络并不通,怎么办呢?
建立两个网卡之间的连接即可
[root@server1 ~]# docker network connect my_net1 vm6
在这里插入图片描述

7.docker --link的使用
–link用来连接两个容器
–link的格式
–link <名字 or id>:alias
名字是源容器的name或id,alias为源容器在link连接时的别名
在这里插入图片描述
在新容器vm1中可以ping通nginx容器的name或者link添加的 别名
在这里插入图片描述
在停止nginx的容器后就无法ping通了,再次开启依旧可以ping通。

8.外网如何访问容器
[root@server1 ~]# docker run -d --name web -p 80:80 nginx:1.16
eab65419f9595c3729f0cafb3b506980d67136a6bd53c4c7026585aef1056d46
查看容器的端口并编写index.html然后复制到容器内部的nginx默认发布目录
在这里插入图片描述

内网访问以docker-proxy的方式完成
[root@server1 ~]# curl localhost
aini1wannian
[root@server1 ~]# curl 172.25.32.1
aini1wannian
[root@server1 ~]# docker inspect web##获取该容器ip
在这里插入图片描述
[root@server1 ~]# curl 172.17.0.2
aini1wannian

外部网络访问以端口转发的方式访问
在这里插入图片描述[kiosk@foundation32 Desktop]$ curl 172.25.32.1
aini1wannian
在这里插入图片描述

9.容器之间的互通(macvlan)
条件:
macvlan网络方案实现,必须要打开网卡混杂模式
俩台主机server1,server2,并且都添加俩块网卡
俩台主机都安装docker,并且导入ubuntu的镜像(我使用的为ubuntu镜像)
[root@server1 ~]# ip link set up eth1
[root@server1 ~]# ip link set eth1 promisc on
[root@server1 ~]# docker network create -d macvlan --subnet 172.20.0.0/2[root@server1 ~]# docker network create -d macvlan --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=eth1 macvlan1
1b9ed270bc6004ab980da93be5b59b2f587ef36fb067e027aa541a8570c7a141
[root@server1 ~]# docker run -it --name vm1 --network macvlan1 --ip 172.20.0.10 ubuntu

在这里插入图片描述

[root@server2 ~]# ip link set up eth1
[root@server2 ~]# ip link set eth1 promisc on
[root@server2 ~]# docker network create -d  macvlan --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=eth1 macvlan1
[root@server2 ~]# docker run -it --name vm2 --network macvlan1 --ip 172.20.0.11 ubuntu

在这里插入图片描述

可以ping通server1端。
若想给容器再添加ip,可以再加一块额外的网卡开启网卡混杂模式按照上述步骤进行操作。(相当于分线器将网ip连接到了同一个局域网内,其中的机器可以互通)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值