(四)Docker网络&&可视化面板

文章目录

  • 一、Docker网络
    • 1.docker0
    • 2.--link参数(不推荐使用)
    • 3.自定义网络(推荐使用)
  • 二、网络连通
  • 三、Docker可视化面板

一、Docker网络

1.docker0

通过ip addr命令查看本机网卡ip:
(四)Docker网络&&可视化面板_第1张图片
安装docker后,会出现docker0虚拟网卡。此虚拟网卡是通过桥接模式连到物理网卡中。

docker run -d -P --name tomcat1 tomcat # 启动一个tomcat容器
docker exec -it tomcat1 ip addr # 启动容器并执行ip addr命令

(四)Docker网络&&可视化面板_第2张图片
现在宿主机ping一下容器ip试试:ping 172.17.0.2,可以ping通。容器之间进行ip互ping也是可以ping通的。

注:每启动一个容器,docker会给容器分配一个ip。

此时再查看宿主机的ip:
(四)Docker网络&&可视化面板_第3张图片
可以看到,这里为容器分配了一个ip。容器中是46:…47,宿主机中是47:…46。这便是通过Linux中的evth-pair技术,将一对虚拟设备接口连接。

容器之间网络连接全部通过docker0虚拟网卡连接。

2.–link参数(不推荐使用)

启动容器时,通过--link参数后接容器名字:
docker -d -P --name [容器名1] --link [容器名0] [镜像名]
此时容器1便可以ping通容器0。因为docker修改了宿主机的/etc/hosts文件,将容器1的名定向到了容器0的ip。

3.自定义网络(推荐使用)

为什么要使用自定义网络?正常通过–link创建的容器是不能互相ping通的,使用自定义网络可以实现容器互相ping通,且可以通过容器名字互相ping。

  • docker常见的网络模式有以下几种:

    bridge:桥接模式(docker默认)
    host:和宿主机共享网络
    container:容器内连通(不常使用)
    none:不配置
    
  • 自定义网络也使用bridge模式。

  • 开始测试
    docker network ls列出所有的网络
    启动容器时,如果不指定--net参数,则相当于执行以下命令,默认使用docker0:
    docker run -d -P --name tomcat1 --net bridge tomcat

    现在创建自定义网络:

    docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet # subnet是子网 gateway是网关 mynet是网络名字
    

    查看网络如下:
    (四)Docker网络&&可视化面板_第4张图片
    docker network inspect mynet看一下网络详情:
    (四)Docker网络&&可视化面板_第5张图片
    此时通过刚才新建的容器创建容器:

    docker run -d -P --name tomcat --net mynet tomcat
    docker run -d -P --name tomcat1 --net mynet tomcat
    
    

    再查看一下网络详情:
    (四)Docker网络&&可视化面板_第6张图片
    已经可以看到两个容器的信息了。宿主机中也可以看见新建的虚拟网卡。

二、网络连通

现在考虑一个问题:连接到不同的虚拟网卡的容器怎样连接?例如,目前container0和container1连接在docker0网卡上,container2和container3连接在mynet网卡上,如何使container0和container2进行ping通?

下面开始使用docker network connect命令。

docker network connect mynet container0 # 连通之后将container0容器放到了mynet网络下
# 此时,容器container0有两个ip。容器间已经可以互相ping通。

三、Docker可视化面板

使用一个简单的可视化面板——Portainer。

首先安装Portainer:

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

然后后面注册一下登陆上就可以用了。

你可能感兴趣的:(Docker学习笔记)