首页 > 其他分享 >docker network

docker network

时间:2023-01-05 19:11:22浏览次数:46  
标签:容器 network -- ip docker name

docker network

1、是什么

  1. docker不启动,默认网络情况
    • ens33
    • lo
    • cirbr0
  2. docker启动后,网络情况
    • 多了一个docker0
  • 查看docker网络模式命令
  • docker network ls

2、常用基本命令

  1. All命令
  • docker network --help
  1. 查看网络
  • docker network ls
  1. 查看网络源数据
  • docker network inspect xxx网络名字
  1. 删除网络
  • docker network rm xxx网络名字

3、能干嘛

  1. 容器间的互联和通信以及端口映射
  2. 容器ip变动的时候可以通过服务名直接网络通信而不受影响

4、网络模式

  1. 总体介绍
  • 简介
  • 网络模式
  • bridge
  • 为每一个容器分配、设置ip等,并将容器连接到一个docker0
  • host
  • 容器将不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机的ip和端口
  • none
  • 容器独有的Network namespace,但没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等
  • container
  • 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等
  1. 容器实例内默认网络IP生产规则
    • 说明
    • 创建了两个ubuntu容器实例u1、u2
    • IP分别是172.17.0.2、172.17.0.3
    • 接下来删除u2创建u3
    • 此时u3IP为172.17.0.3
    • 结论
    • docker容器内部的ip是有可能变的
  2. 案例说明
    • bridge
    • docker run -d -p 8081:8080 --name tomcat81 tanshao/tomcat8-jdk8
      docker run -d -p 8082:8080 --name tomcat82 tanshao/tomcat8-jdk8
    • 两两匹配验证
    • //在容器外面查看ip
      docker inspect 容器名

      //在容器内部查看
      ip addr
    • host
      • 是什么
        • 直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。
        • 容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。
      • 代码
        • 警告:docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8
        • 正确:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8
        • 因为在host模式下,使用客户端ip,指定ip不起作用
    • none
      • 禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)
      • 案例
        • docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8
    • container
      • 新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的
      • 案例
        • //错误示例:相当于86、85共用同一个ip端口,导致端口冲突
          docker run -d -p 8085:8080 --name tomcat85 billygoo/tomcat8-jdk8
          docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8

          //正确示例:Alpine是一个面向安全的轻型Linux发行版
          docker run -it --network --name alpine1 alpine /bin/sh
          docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh
        • 运行结果,验证共用搭桥
        • 假如此时关闭alpine1,再看看alpine2
    • 自定义网络
    • docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
      docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
    • 上述成功启动并用docker exec进入各自容器实例内部
    • 问题
    • 按照IP地址ping是OK的
    • 按照服务名ping结果???
    • after
    • 案例
    • 定义桥接网络,自定义网络默认使用的是桥接网络bridge
    • 新建自定义网络
    • 新建容器加入上一步新建的自定义网络
    • docker run -d -p 8081:8080 --network zzyy_network --name tomcat81 billygoo/tomcat8-jdk8
    • docker run -d -p 8082:8080 --network zzyy_network --name tomcat82 billygoo/tomcat8-jdk8
    • 互相ping测试
    • 问题结论
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

标签:容器,network,--,ip,docker,name
From: https://www.cnblogs.com/tanhongwei/p/17028651.html

相关文章

  • docker 在Mac的M1芯片下,有的不成功的解决
    version:'3.7'services:prometheus:container_name:"prometheus"restart:alwaysimage:prom/prometheusdeploy:resources:......
  • docker学习笔记
    Kubernetes(k8s)1、​​干货满满!10分钟看懂Docker和K8S​​​​centos7配置国内yum源​​官网:​​https://www.docker.com/​​​仓库:​​https://hub.docker.com/​​E......
  • dockers部署confluence
    Docker安装1、安装依赖包:yuminstall-yyum-utilsdevice-mapper-persistent-datalvm22、更新yum缓存:yummakecachefast3、添加docker下载源地址:yum-config-mana......
  • docker 安装
    1、在centos上安装docker-ce配置docker-ce环境#配置repo源#配置repo源yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--a......
  • ubuntu下docker及打deb包
    Bash函数-BashShell教程#文件测试-e文件存在-a文件存在这个选项的效果与-e相同.但是它已经被弃用了,并且不鼓励使用-ffile是一个regular文件(不是目录或者设备文......
  • dockerfile实践学习
    一、dockerfile简介镜像是分层存储的,每一层在前一层的基础上进行修改。容器也是分层存储,已经向为基础层,在其他基础上加一层作为容器运行的存储层。创建镜像的另种两种......
  • Docker 容器时区问题
    1.问题kubectlexec-itpodName-nnamespace/bin/sh进入容器运行date命令,发现时区不对是UTC时区,造成公司日志系统无法采集日志,需要改为UTC+8北京时间。2.解决......
  • unity之network客户端向服务器发送消息【Command】方法详解
    如果是纯粹是聊天室功能则可以使用NetworkView的方法来进行,简单实用。如果不是聊天室功能而是要传递数据给服务器,同时为了以后更多功能的拓展性,还是应该用networkmanager来......
  • Unity之NetworkView聊天室功能
    NetworkView是Unity封装的一套快速实现多人联机游戏的功能。以此为基础,我们可以开发各种类型的多人游戏,可以开发过关游戏的双人联机,也可以开发类似于CS的射击游戏,以房间为单......
  • Docker Desktop bugs All In One
    DockerDesktopbugsAllInOnebugsDockerDesktopstopped...Enginestopped(......