• docker(第四天)


    发布自己的镜像

    Dockerhub 

    1.地址  https://hub.docker.com/ 注册自己得账号

    2.在我们服务器上提交自己得镜像

    docker  login -u    //username

    3.镜像名需要改为  注册用户名/镜像名操作否则被拒绝

     Docker 网络

    三个网络

    #docker是如何处理容器网络访问得? 

     

     

    原理 

    1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用得技术是evth-pair技术!
    再次测试ip addr

     发现运行完上一个容器,从1-3,多了一个 262网卡里面包含261成对出现

    2.在启动一个容器测试发现又多了一对网卡

     我们发下这个容器带来网卡,都是一对一对得

    veth-pair 就是一对得虚拟设备接口,他们都是成对出现得,一段连着协议,一段彼此相连

    正因为有这个特性,veth-pair充当一个桥梁,链接各种虚拟网络设备

     3.我们来测试一下tomcat01和tomcat02是否可以ping通

    docker exec -it tomcat02 ping 172.17.0.2

    结论:容器和容器之间是可以ping通的

    绘制一个网络模型图:

    结论:tomcat01和tomcat02是公用的一个路由器,docker0

    所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP

    解释:容器A 和容器B并不是直接进行链接而是,容器A发送请求到docker0,然后再到容器B

    docker中的所有的网络接口都是虚拟的,因为虚拟的转发效率高,内网传递文件

    只要容器删除,对应的网桥一对就没了 

    --link  (作为了解即可)

     

     link进行了链接,3ping2可以,2ping3反向就不行

    docker inspect可以看见很多相关的知识

     如果指定容器查看, docker inspect 容器id        

     其实这个tomcat 03就是在本地配置了tomcat02的配置

     进入容器访问hosts,因为一般配置信息都在这里

    自定义网络‘

    查看所有的docker网络

     网络模式

    bridge:桥接 docker(默认,自己床架也使用bridge模式) 就是02访问03,需要借助01

    none:不配置网络

    host:和宿主机共享网络

    container:容器网络连通(用的少,局限很大)

     测试:

    我们直接启动的命令 --net bridge, 而这个就是我们的docker0

    docker run -d -P --name tomcat01 tomcat 

    docker run -d -P --name tomcat01 --net bridge tomcat  等价

    #docker0特点,默认,域名不能访问, --link可以打通连接!

    我们可以自定义一个网络

    --driver bridge  默认桥接

    --subnet 192.168.0.0/16 子网的地址   192.168.0.2 ---192.168.255.255

    --gateway 192.168.0.1 网关

     查看我们自己配置的网络,docker network inspect mynet

     

     按预期的一样子网地址,因为在同一网段,直接ping  IP 就可以ping通

     

    网络连通

     要实现跨网段的容器互通,比如tomcat-01   ping tomcat-net-01

    直接ping是不通的,因为是不同网段,一个是182.18  一个是192.168

    所以我们需要tomcat-01容器和网卡mynet要打通

    测试打通tomcat-01 到mynet

    docker network connect mynet tomcat01  把tomcat01放入mynet网卡中

    然后查看 docker network inspect mynet 就可以看见再其中

    连通之后就是将tomcat01放到了 mynet网络下

    一个容器两个ip地址

    阿里云服务:公网IP 私网IP

     docker exec -it tomcat01 ping tomcat -net -01

     tomcat 02 ping tomcat-net-01 就不行

    结论:假设要跨网络操作别人,就需要使用 docker network connect 连通! 

    呃呃呃初级的基本命令,和一些简单的网络连通就学完了,接下来就是巩固一下了!

  • 相关阅读:
    买家的诉求决定你的产品卖点
    SpringBoot中 Mybatis 的xml映射文件配置
    02 【axios fetch 跨域】
    面经-并发-对ThreadLocal(线程隔离)的理解
    【数字信号去噪】基于matlab变分贝叶斯卡尔曼滤波器数字信号滤波【含Matlab源码 2256期】
    TMS320C6678+Kintex-7开发板——DSP程序固化操作手册
    java计算机毕业设计评标专家管理信息系统源码+数据库+系统+lw文档+mybatis+运行部署
    Ajax学习笔记第二天
    HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计
    MySql(48)锁
  • 原文地址:https://blog.csdn.net/qq_62046696/article/details/126769719