Docker基础24--Docker网络配置

这篇具有很好参考价值的文章主要介绍了Docker基础24--Docker网络配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

五、Docker网络配置

5.1 Docker网络工作原理

Docker服务启动时候会创建一个名为docker0的网桥,在启动容器的时候,会在宿主机和容器内各生成一个虚拟网卡。宿主机和容器内的虚拟网卡默认是连接到docker0这个网桥上的。所以容器可以和宿主机或其它容器网络通信。

Docker0的默认IP为172.17.0.1

Docker基础24--Docker网络配置

 文章来源地址https://www.toymoban.com/news/detail-403926.html

启动一个容器再观察:

Docker基础24--Docker网络配置

 

发现容器的ip172.17.0.2

Docker基础24--Docker网络配置

 

ping宿主机,发现是可以ping通的

在宿主机上查看桥接信息

brctl show

Docker基础24--Docker网络配置

 

发现这个docker0上连接了一块虚拟网卡,这块虚拟网卡就是用来连接容器的。

我们再开一个容器

Docker基础24--Docker网络配置

 

发现这个docker0上连接了两块虚拟网卡,分别用于连接两个容器

ip link show 这个命令也能看到这两块网卡。

Docker基础24--Docker网络配置

Docker基础24--Docker网络配置 

 

docker容器工作示意图。。

那么,docker又是如何可以连通宿主机以外的网络,外网又是如何可以访问到容器呢?

很简单,就是通过iptablesnat功能。

查看iptablesnat配置:

iptables  -t nat –L

Docker基础24--Docker网络配置

 

第一个红框内是源地址转换,意思是容器访问外网的时候,源地址转换为宿主机外网网卡的地址。

第二个红框内是目的地址转换,意思是外网访问宿主机3306端口时,iptables外将目的地址转换为容器的IP地址。

我们之前学习过的3.5.1小节“将宿主机的端口映射到容器”这一章讲过的,在创建容器时加-v SPT:DPT这个参数,期实就是容器启动时在iptables中添加了一条目的地址转换的策略。

5.2 Docker网络的三种模式

bridge:桥接模式,容器网卡桥接到宿主机的桥上。(默认模式)

host:容器使用宿主机的网络配置。

none:容器不配置网卡

Docker启动后,会自动创建三个网络,分别对应以上三种模式。

docker network ls

Docker基础24--Docker网络配置

 

host模式:

创建一个容器,并指定使用host网络

docker run -it --name centos1 --hostname centos1 --network host centos bash

--network bridge|host|none  #这里可以指定使用哪个网络,默认为bridge.

Docker基础24--Docker网络配置

 

可以看到,容器内的网络参数和宿主机是一样的。

NONE模式:

docker run -it --name centos2 --hostname centos2 --network none centos bash

Docker基础24--Docker网络配置

 

可以看到,容器内没有网卡。

5.3 新建docker网络

默认的网络:bridge,使用docker0做为网桥,默认使用172.17.0.1/16,且似乎无法修改,且容器的IP地址只能由宿主机自动分配,没办法指定固定的IP。

如果docker0的IP网段和我们宿主机的网段有冲突的话,那我们就没办法使用docker了。

因此我们需要新建一个docker网络。

docker network create mynet --subnet 192.168.100.0/24 --gateway 192.168.100.1

--subnet 192.168.100.0/24mynet的网段设为192.168.100.0/24

--gateway 192.168.100.1mynet的网关设为192.168.100.1(宿主机会取得这个地址)

Docker基础24--Docker网络配置

 

这里会出现刚刚创建的那个网络。

Docker基础24--Docker网络配置

Docker基础24--Docker网络配置 

 

宿主机上会多出一个网桥,并且IP地址是192.168.100.1

5.4自定义容器网络

现在新建一个容器,并将它连接到上一小节创建的网络mynet上。

docker run -it --name centos1 --network mynet centos bash

Docker基础24--Docker网络配置

 

发现容器的IP192.168.100.2

Docker基础24--Docker网络配置

 

是可以ping通宿主机上,我们刚建的那个网桥的。

在宿主机上 brctl show,桥接已经建起来了。

Docker基础24--Docker网络配置

 

我们也可以更改已创建完成的容器的网络

docker network connect bridge centos1

以上命令,将我们刚刚创建的容器(已连接到mynet,这个网络的),连接到默认的bridge上。

Docker基础24--Docker网络配置

 

容器的IP地址,又变回到默认docker0的网段了。

我们也可指定容器使用固定IP地址

docker run -it --name centos3 --network mynet --ip 192.168.100.100 centos bash

--network mynet:指定连接到mynet这个网络

--ip 192.168.100.100:指定容器的IP地址为192.168.100.100.

注:当容器使用默认网络连接的时候,是不能指定容器的固定IP的;

指定的IP地址,必须和网桥在同一个网段。

Docker基础24--Docker网络配置

 

5.5 使用openvswitch网桥

Docker默认使用的是Linux自带的网桥实现,可以替换为使用功能更强大的Openv-Switch虚拟交换机实现。

Step 1安装openvswitch

  1. 配置yum源

Openvswitch的yum源,在系统默认的yum源里是没有的,需要安装一个openstack yum源

yum -y install centos-release-openstack-queens

yum makecache

  1. 使用yum 安装openswitch

yum -y install openvswitch

  1. 启动openvswitch服务,并设置为开机自启动

systemctl start openvswitch

systemctl enable openvswitch

  1. 查看openvswitch状态

systemctl status openvswitch

Docker基础24--Docker网络配置

 

Ifconfig

Step 2 创建一个名为ovsbr0的网桥

ovs-vsctl add-br ovsbr0

查看一下创建好的网桥

Docker基础24--Docker网络配置

 

创建成功

Step 3 使用特权模式创建并运行一上无网络的容器

docker run -it --name centos1 --privileged=true --net=none centos bash

--privileged=true:使用特权模式,容器可以获得宿主机的root权限

--net=none :设备容器为无网络模式

此时容器内只有一个回环网卡

Docker基础24--Docker网络配置

 

Step 4 下载OpenvSwitch项目提供的支持Docker容器的辅助脚本ovs-docker

wget https://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker

给这个脚本加一下可执行权限

Chmod a+x ovs-docker

Step 5 给容器添加一块网卡eth0,并桥接到openvswitch创建的桥ovsrb0,并配置IP 地址

./ovs-docker add-port ovsbr0 eth0 centos1 --ipaddress=172.16.0.2/24

到容器内看一下网络配置

docker exec -it centos1 bash

ip address

Docker基础24--Docker网络配置

 

这里可以看到,容器内已添加了一块网卡,并且有了IP地址

Step 6 在宿主机上配置一下ovsbr0的地址

ifconfig ovsbr0 172.16.0.1/24

Docker基础24--Docker网络配置

 

测试一下容器网络:

Docker基础24--Docker网络配置

 

网络是通的

5.5 自定义DOCKER_OPTS

可以使用DOCKER_OPTS对docker做更精细的管理。

Step1 :

修改docker.sevice文件

vim /usr/lib/systemd/system/docker.service

Docker基础24--Docker网络配置

 

以上红框内是需要加入的内容。

Step 2 创建/etc/default/docker文件

Docker基础24--Docker网络配置

 

这边加入一个OPTS “--bip 10.1.0.1/24”

实验1:修改docker0的默认IP

系统默认的docker0的IP地址是172.17.0.1/16,这里我们把这个默认IP改为10.1.0.1/24

1)按照step 2中的操作,增加一个OPTS “--bip 10.1.0.1/24”

2)重载服务配置文件,重启docker服务

systemctl daemon-reload

systemctl restart docker

3)查看docker0的IP地址

ifconfig docker0

Docker基础24--Docker网络配置

 

发现docker0的IP地址已经变了。

  1. 创建一个名为centos3的容器

docker run -it --name centos3 centos bash

Docker基础24--Docker网络配置

 

发现容器的IP地址变成10.1.0.0这个网段了

实验2:让容器之间不能互通

默认情况下,容器之间是可以通过网络互相访问的,但有些情况下,为了安全起见,需要限制容器间的访问。

Docker基础24--Docker网络配置

 

在配置前,我们先开两个容器,centos1 (IP:10.1.0.2),centos2(IP:10.1.0.3)

进入容器centos2,去ping centos1的IP

Docker基础24--Docker网络配置

 

发现是可以通的。

然后我们在/etc/default/docker这个文件里加入一个OPTS “--icc=false”

清空iptables

iptables -F

重载服务配置文件,重启docker服务

systemctl daemon-reload

systemctl restart docker

再次开启容器centos1和centos2,并进入centos2 ping centos1 ,看效果:

Docker基础24--Docker网络配置

 

发现已经ping不通了。

这个之所以ping不通了,是因为加了这个OPTS后,会在iptables中生成一条规则。

我们查看下iptables规则:

iptables -nF

Docker基础24--Docker网络配置

 

到了这里,关于Docker基础24--Docker网络配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 网络模型使用详解 (1)Dockers网络基础

    目录 环境准备 Dockers 网络基础 1.端口映射 查看随机映射端口范围  -p可以指定映射到本地端口 映射指定地址和指定端口 映射指定地址 宿主机端口随机分配  指定传输协议  端口暴露 容器互联 自定义网络 现在把container7加入到demo_net中 在启动一个容器加入到demo_net  查看三个

    2024年02月14日
    浏览(21)
  • Linux:docker的基础网络模式

    docker network --help                #查看network帮助 docker network connect                #将将容器连接到网络 docker network  create                #新建网络,默认bridge桥接模式 docker network disconnect          #断开容器与网络的连接 docker network inspect                #查

    2024年02月20日
    浏览(22)
  • docker 网络配置详解

    目录 1、docker网络模式 2、容器和容器之间是如何互通 3、容器之间互通 --link 3、自定义网络 4、不通网段的容器进行网络互通 1、docker网络模式 docker 网络模式采用的是桥接模式,当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡,这个虚拟网卡和我们的容器网络

    2024年02月07日
    浏览(24)
  • Docker(八)高级网络配置

    作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 注意:本章属于 Docker 高级配置,如果您是初学者,您可以暂时跳过本章节,直接学习 Docker Compose 一节。 本章将介绍 Docker 的一些高级网络配置和选项。 当 Docker 启动时,会自动在主机

    2024年01月21日
    浏览(19)
  • Docker系列--网络的配置

    原文网址:Docker系列--网络的配置_IT利刃出鞘的博客-CSDN博客 说明 本文介绍Docker的网络的配置。 官网网址 https://docs.docker.com/engine/reference/commandline/network/ Docker启动之后,系统中会产生一个名为docker0的虚拟网桥,会默认创建三个网络:bridge、host、none。 网络模式 简介 bridge 为

    2024年02月07日
    浏览(74)
  • Docker高级——网络配置

    安装 Docker 以后,会默认创建三种网络,可以通过 docker network ls 查看 Docker提供了几种网络模式,用于管理容器之间的通信和与外部网络的连接。下面是几种常见的网络模式及其原理: 桥接模式(Bridge) :桥接模式是Docker默认的网络模式。在桥接模式下,Docker会为每个容器创

    2024年02月08日
    浏览(25)
  • Docker基础入门:Docker网络与微服务项目发布

    💖The Begin💖点点关注,收藏不迷路💖 Docker是当今最流行的容器化平台之一,它提供了一个轻量级、可移植和可扩展的应用环境。 而在Docker中,网络是构建容器化应用的关键组成部分之一。本文将深入探讨Docker网络,构建高效、可扩展的应用容器化网络架构。 在 Docker 中,

    2024年02月10日
    浏览(28)
  • 【Docker】网络配置及自定义网络的使用

            Docker的网络配置主要是指Docker容器与外部网络之间的连接设置,包括容器内部的IP地址、端口号等。Docker提供了多种网络模式,包括bridge、host、none等,以满足不同的需求。         默认情况下,Docker使用bridge模式,即创建一个虚拟网桥,将容器连接到该网桥上

    2024年01月20日
    浏览(35)
  • 【Docker】网络配置network详解

    解决痛点(能干什么?): (1)容器间的互联和通信以及端口映射 (2)容器IP变动时候,可以通过服务名直接网络通信而不受到影响 网络模式 命令指定方式 描述 理解 bridge –network bridge 为每一个容器分配、设置 ip ,并将容器连接到 docker0 虚拟网桥上,虚拟网桥,默认为该

    2024年02月19日
    浏览(29)
  • Docker之网络配置的使用

         🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker之网络配置的使用》。🎯🎯 🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁         在上期的博客的分享过程中我们分享了Dockerfile如何去

    2024年01月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包