docker 网络配置详解

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

目录

1、docker网络模式

2、容器和容器之间是如何互通

3、容器之间互通 --link

3、自定义网络

4、不通网段的容器进行网络互通

1、docker网络模式

docker 网络模式采用的是桥接模式,当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡,这个虚拟网卡和我们的容器网络是一一对应(成对出现)。默认创建的容器都是docker0网卡。

2、容器和容器之间是如何互通

当我们创建一个容器时没有指定容器网络时,docker会默认走docker0网络,docker会默认在虚拟机上创建一个虚拟网卡这个网卡地址会和我们容器地址对应。此时会出现我们可以通过互ping容器的ip 地址可ping通容器,但是通过容器名互ping是无法ping通,因技术要求需要我们自定义网络ip达到互通;默认创建的容器都是docker0网卡。

##查看Tomcat01 的ip地址
docker  exec -it   tomcat01  ip addr
[root@localhost ~]# docker  exec -it tomcat01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
​##查看Tomcat02 的ip地址
docker  exec -it   tomcat02  ip addr
[root@localhost ~]# docker  exec -it tomcat02 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
##用Tomcat01 的ip ping  Tomcat02 的ip 
docker exec -it tomcat01 ping 172.17.0.2
[root@localhost ~]# docker  exec -it tomcat01 ping -c 3 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.074 ms

--- 172.17.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.051/0.065/0.074/0.012 ms
####用Tomcat01 的ip ping  Tomcat02名称(不通)
docker exec -it tomcat01 ping    Tomcat02 

[root@localhost ~]# docker  exec -it tomcat01 ping tomcat02 
ping: unknown host tomcat02

docker网络配置,docker,docker网络,docker,网络

 

3、容器之间互通 --link

我们可以使用link来达到容器之间的互通

##使用link来实现Tomca01   可以ping通 Tomcat02 
docker  run  -d   --name   tomcat01  --link tomcat02   tomcat:8.0
​
[root@localhost ~]# docker  run -d  --name tomcat02 tomcat:8.0
863a3c34388d560406716f8ff46ffc94dec44fb2e42b129bc5bd505d878fc736
[root@localhost ~]# docker run -d --name tomcat01 --link tomcat02 tomcat:8.0
ea2bebceb939c0c6dac31b475045c4a1dcde9511df9e2948665ac45bd003abd4
##用Tomcat01 ping tomcat02
docker  exec   -it   tomcat01 ping tomcat02
​
[root@localhost ~]# docker exec -it tomcat01 ping -c 3 tomcat02
PING tomcat02 (172.17.0.2) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.2): icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from tomcat02 (172.17.0.2): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from tomcat02 (172.17.0.2): icmp_seq=3 ttl=64 time=0.054 ms
​
--- tomcat02 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.054/0.067/0.093/0.018 ms
##使用Tomcat02来ping  tomcat01  (ping不通)
docker  exec   -it   tomcat02   ping   tomcat01
​
[root@localhost ~]# docker exec -it tomcat02 ping -c 3 tomcat01
ping: unknown host tomcat01

使用link其实是在容器内部 /etc/hosts 中添加了对应的映射关系。如果删除了就不能互通。

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE        COMMAND             CREATED         STATUS         PORTS      NAMES
ea2bebceb939   tomcat:8.0   "catalina.sh run"   5 minutes ago   Up 5 minutes   8080/tcp   tomcat01
863a3c34388d   tomcat:8.0   "catalina.sh run"   6 minutes ago   Up 6 minutes   8080/tcp   tomcat02
​
[root@localhost ~]# docker exec -it tomcat01 /bin/bash
root@ea2bebceb939:/usr/local/tomcat# cd /etc
root@ea2bebceb939:/etc# cat hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  tomcat02 863a3c34388d
172.17.0.3  ea2bebceb939

3、自定义网络

##查看帮助文档
 [root@localhost ~]# docker network --help
​
Usage:  docker network COMMAND
​
Manage networks
​
Commands:
  connect     Connect a container to a network
  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.
​
[root@localhost ~]# docker network  create --help
​
Usage:  docker network create [OPTIONS] NETWORK
​
Create a network
​
Options:
      --attachable           Enable manual container attachment
      --aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
      --config-from string   The network from which to copy the configuration
      --config-only          Create a configuration only network
  -d, --driver string        Driver to manage the Network (default "bridge")
      --gateway strings      IPv4 or IPv6 Gateway for the master subnet
      --ingress              Create swarm routing-mesh network
      --internal             Restrict external access to the network
      --ip-range strings     Allocate container ip from a sub-range
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt map         Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label list           Set metadata on a network
  -o, --opt map              Set driver specific options (default map[])
      --scope string         Control the network's scope
      --subnet strings       Subnet in CIDR format that represents a network segment
##自定义网络NTtomcat
[root@localhost ~]# docker network create --driver bridge --subnet 192.168.123.1/16 --gateway 192.168.123.1 NTtomcat
388c65d9e6dc3a685d9dfc07e6cd77b7df753b9790ececd2a4917c486c999fd5
[root@localhost ~]# docker  network ls
NETWORK ID     NAME       DRIVER    SCOPE
388c65d9e6dc   NTtomcat   bridge    local
a468667c9afc   bridge     bridge    local
9ed8bb46f222   host       host      local
cf4382a12125   none       null      local


##--driver  bridge   桥接模式    如果不指定默认为bridge
##--subnet 192.168.0.1/16    子网范围内的。0~16,也就是 255*255,去掉0个255,我们有65534可以分配的ip
##gateway 192.168.0.1  指定网关
##mynetwork   网络名称(路由名称)
##创建自定义容器tomcat01-01 和tomcat02-02
[root@localhost ~]# docker  run -d --name tomcat01-01 --ip 192.168.123.10 --network NTtomcat --hostname tomcat01-01 tomcat:8.0
710087d898e573015590421594d468e6f7b86cee81badcb76d3370f4decd113d
[root@localhost ~]# docker run -d --name  tomcat02-02 --ip 192.168.123.11 --network NTtomcat --hostname tomcat02-02 tomcat:8.0
e7804543a17de40136c883c1ae767d185fd033c0503751449f4b04a7bcc2b479
[root@localhost ~]# docker  ps
CONTAINER ID   IMAGE        COMMAND             CREATED              STATUS              PORTS      NAMES
e7804543a17d   tomcat:8.0   "catalina.sh run"   7 seconds ago        Up 7 seconds        8080/tcp   tomcat02-02
710087d898e5   tomcat:8.0   "catalina.sh run"   About a minute ago   Up About a minute   8080/tcp   tomcat01-01
ea2bebceb939   tomcat:8.0   "catalina.sh run"   25 minutes ago       Up 25 minutes       8080/tcp   tomcat01
863a3c34388d   tomcat:8.0   "catalina.sh run"   26 minutes ago       Up 26 minutes       8080/tcp   tomcat02
[root@localhost ~]# docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
388c65d9e6dc   NTtomcat   bridge    local
a468667c9afc   bridge     bridge    local
9ed8bb46f222   host       host      local
cf4382a12125   none       null      local
##查看NTnetwork 路由下的容器,下面已经多出来Tomcat01-01和Tomcat02-02容器的网络地址

[root@localhost ~]# docker network inspect NTtomcat
[
    {
        "Name": "NTtomcat",
        "Id": "388c65d9e6dc3a685d9dfc07e6cd77b7df753b9790ececd2a4917c486c999fd5",
        "Created": "2023-07-20T09:11:11.409974483+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.123.1/16",
                    "Gateway": "192.168.123.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "710087d898e573015590421594d468e6f7b86cee81badcb76d3370f4decd113d": {
                "Name": "tomcat01-01",
                "EndpointID": "f068d52745d677dd2b67c4e091f8e7bb4364688a6047cb47bd69d2e95f7f5267",
                "MacAddress": "02:42:c0:a8:7b:0a",
                "IPv4Address": "192.168.123.10/16",
                "IPv6Address": ""
            },
            "e7804543a17de40136c883c1ae767d185fd033c0503751449f4b04a7bcc2b479": {
                "Name": "tomcat02-02",
                "EndpointID": "1261a1c9ecf877597564f3c76ce1b73da82533361f8bf0887c46c3b377fe7647",
                "MacAddress": "02:42:c0:a8:7b:0b",
                "IPv4Address": "192.168.123.11/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
​
##查看Tomcat01-01 ip地址
[root@localhost ~]# docker  exec -it tomcat01-01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
24: eth0@if25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:c0:a8:7b:0a brd ff:ff:ff:ff:ff:ff
    inet 192.168.123.10/16 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
##查看Tomcat01-01 ip地址
[root@localhost ~]# docker  exec -it tomcat02-02 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:c0:a8:7b:0b brd ff:ff:ff:ff:ff:ff
    inet 192.168.123.11/16 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
##使用Tomcat01-01 ping   Tomcat02-02
[root@localhost ~]# docker exec -it tomcat01-01 ping -c 2 tomcat02-02
PING tomcat02-02 (192.168.123.11) 56(84) bytes of data.
64 bytes from tomcat02-02.NTtomcat (192.168.123.11): icmp_seq=1 ttl=64 time=0.124 ms
64 bytes from tomcat02-02.NTtomcat (192.168.123.11): icmp_seq=2 ttl=64 time=0.054 ms
​
--- tomcat02-02 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.054/0.089/0.124/0.035 ms
##使用Tomcat02-02  ping  Tomcat01-01
[root@localhost ~]# docker exec -it tomcat02-02 ping -c 2 tomcat01-01
PING tomcat01-01 (192.168.123.10) 56(84) bytes of data.
64 bytes from tomcat01-01.NTtomcat (192.168.123.10): icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from tomcat01-01.NTtomcat (192.168.123.10): icmp_seq=2 ttl=64 time=0.052 ms
​
--- tomcat01-01 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.052/0.055/0.058/0.003 ms

4、不通网段的容器进行网络互通

tomcat01 网络ip 为172.17.0.2

docker网络配置,docker,docker网络,docker,网络

 ##用Tomcat01 ping   tomcat01-01

[root@localhost ~]# docker  exec -it tomcat01  ping tomcat01-01
ping: unknown host tomcat01-01

##使用docker  network connect 将容器Tomcat01 加入到NTtomcat

[root@localhost ~]# docker  network connect  NTtomcat taomcat01
[root@localhost ~]# docker  exec -it taomcat01  ping -c 2 tomcat01-01
PING tomcat01-01 (192.168.123.10) 56(84) bytes of data.
64 bytes from tomcat01-01.NTtomcat (192.168.123.10): icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from tomcat01-01.NTtomcat (192.168.123.10): icmp_seq=2 ttl=64 time=0.055 ms
^C
--- tomcat01-01 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.055/0.061/0.080/0.013 ms

 ##查看NTtomcat 中添加的容器文章来源地址https://www.toymoban.com/news/detail-723530.html

[root@localhost ~]# docker  network inspect NTtomcat
[
    {
        "Name": "NTtomcat",
        "Id": "388c65d9e6dc3a685d9dfc07e6cd77b7df753b9790ececd2a4917c486c999fd5",
        "Created": "2023-07-20T09:11:11.409974483+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.123.1/16",
                    "Gateway": "192.168.123.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "42b2bd9190d5b7de7e2e60b5eab41d6878f91abc517d25380af22ccc4ba05528": {
                "Name": "taomcat01",
                "EndpointID": "3e728f5b90751d45f0e00e69268d2bc9966b15c9578230fd5ab1c179551f6d23",
                "MacAddress": "02:42:c0:a8:00:01",
                "IPv4Address": "192.168.0.1/16",
                "IPv6Address": ""
            },
            "710087d898e573015590421594d468e6f7b86cee81badcb76d3370f4decd113d": {
                "Name": "tomcat01-01",
                "EndpointID": "f068d52745d677dd2b67c4e091f8e7bb4364688a6047cb47bd69d2e95f7f5267",
                "MacAddress": "02:42:c0:a8:7b:0a",
                "IPv4Address": "192.168.123.10/16",
                "IPv6Address": ""
            },
            "e7804543a17de40136c883c1ae767d185fd033c0503751449f4b04a7bcc2b479": {
                "Name": "tomcat02-02",
                "EndpointID": "1261a1c9ecf877597564f3c76ce1b73da82533361f8bf0887c46c3b377fe7647",
                "MacAddress": "02:42:c0:a8:7b:0b",
                "IPv4Address": "192.168.123.11/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

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

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

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

相关文章

  • 史上最全的Docker详解(四)之——Docker 端口映射及相关网络配置

    在Docker中,要理解容器的网络配置以及如何进行端口映射,我们可以从以下几个方面进行详细说明。 通过容器ID来获取容器的IP地址是常见的需求,可以使用以下命令: 需要注意的是,这些IP地址是基于本地系统的,并且容器的端口默认无法从外部主机访问。此外,容器每次

    2024年02月04日
    浏览(28)
  • Docker 网络模型使用详解 (1)Dockers网络基础

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

    2024年02月14日
    浏览(21)
  • 【云原生Docker】09-Docker网络详解

    ​ 安装 Docker 以后,会默认创建三种网络,可以通过 docker network ls 查看。 网络模式介绍: 桥接网络(bridge network 桥接网络是Docker默认的网络模式,也是最常用的一种。在桥接网络中,Docker主机上的所有容器都连接到同一个虚拟网络中。Docker会为每个容器分配一个唯一的IP地

    2023年04月12日
    浏览(19)
  • Docker网络配置&网络模式

    Docker 的网络模式是一种定义容器如何在网络中通信的方式。Docker 提供了多种网络模式,每种模式都适用于不同的使用场景 互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。 IP 地址在设计时就考虑到地址分配的层次特点,将每个

    2024年01月19日
    浏览(30)
  • Docker网络模式详解

    ocker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的默认网关。 因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直

    2023年04月24日
    浏览(20)
  • Docker网络network详解

    Docker 容器每次重启后容器 ip 是会发生变化的。 这也意味着如果容器间使用 ip 地址来进行通信的话,一旦有容器重启,重启的容器将不再能被访问到。 而 Docker 网络就能够解决这个问题。 Docker 网络主要有以下两个作用: 容器间的互联和通信以及端口映射 容器 IP 变动时候可

    2024年02月02日
    浏览(23)
  • 【Docker】网络模式详解及容器间网络通信

    目录 一、概述 二、默认网络 三、网络模式及应用 1. Bridge模式 2. Host模式 3. none网络模式 四、自定义网络应用 1. 网络相连 2. 自定义通讯 3. 自定义IP 每篇一获 在 Docker 中,网络设置包括 IP 地址、子网掩码、网关、DNS 和端口号等关键组成部分。下面我将为您详细介绍这些概念

    2024年01月18日
    浏览(31)
  • Docker基础24--Docker网络配置

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

    2023年04月08日
    浏览(33)
  • 【Docker】专题五:Docker 配置文件详解

    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、docker.service 文件 二、docker.socket 文件 三、daemon.json 文件 一、docker.service 文件 1、基本介绍 docker.service 是 Docker 守护进程(Docker Daemon)

    2024年04月22日
    浏览(18)
  • Docker Compose网络系列--网络的配置

    原文网址:Docker Compose网络系列--网络的配置_IT利刃出鞘的博客-CSDN博客 说明         本文介绍Docker Compose的网络的配置。 官网网址 https://docs.docker.com/compose/networking/ compose的默认配置         默认情况下,Compose会为应用创建一个网络,服务(docker-compose.yaml中的services项)

    2024年02月06日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包