首页 > 其他分享 >Docker网络模式

Docker网络模式

时间:2023-01-16 18:36:49浏览次数:37  
标签:容器 network -- IP 网络 模式 docker Docker

Docker网络作用:容器间的互联和通信以及端口映射,容器IP变动时候可以通过服务名直接网络通信而不受到影响

常用基本命令

docker newwork --help
docker network ls #查看网络
docker network inspect  XXX网络名字  #查看网络源数据
docker network rm XXX网络名字 #删除网络

网络模式有五种

  • bridge模式:使用–network bridge指定,默认使用docker0
  • host模式:使用–network host指定
  • none模式:使用–network none指定
  • container模式:使用–network container:NAME或者容器ID指定
  • 自定义网络

容器实例内默认网络IP生产规则

1 先启动两个ubuntu容器实例
Docker网络模式_tomcat

2 docker inspect 容器ID or 容器名字
Docker网络模式_tomcat_02
3 关闭u2实例,新建u3,查看ip变化
Docker网络模式_tomcat_03
可以看出:docker容器内部的ip是有可能会发生改变的

bridge

桥接模式

Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信
Docker网络模式_容器_04

# 查看 bridge 网络的详细信息,并通过 grep 获取名称项
docker network inspect bridge | grep name

Docker网络模式_docker_05

ifconfig | grep docker

Docker网络模式_网络_06

docker run -d -p 8081:8080   --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080   --name tomcat82 billygoo/tomcat8-jdk8

Docker网络模式_docker_07

host

直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。

容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。
Docker网络模式_网络_08

docker run -d  --network host --name tomcat83 billygoo/tomcat8-jdk8
#这里就不要写 -p 了,通过-p设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。
docker inspect tomcat83 | tail -n 20
#可以看到Networks里边Gateway和IPAddress都是空

此时访问 http://宿主机IP:8080/即可访问tomcat

none

在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo
需要我们自己为Docker容器添加网卡、配置IP等。
Docker网络模式_docker_09
在容器外部查看
Docker网络模式_容器_10

container

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
Docker网络模式_tomcat_11
用Alpine Linux镜像模拟,用tomcat会公用同一个ip同一个端口,导致端口冲突

docker run -it                             --name alpine1  alpine /bin/sh
docker run -it --network container:alpine1 --name alpine2  alpine /bin/sh

运行结果,验证共用搭桥
Docker网络模式_容器_12
关闭alpine1,再看看alpine2也没了
Docker网络模式_tomcat_13

自定义网络

自定义桥接网络,自定义网络默认使用的是桥接网络bridge

docker network ls
#新建自定义网络
docker network create zzyy_newwork

新建容器加入上一步新建的自定义网络

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测试
Docker网络模式_网络_14
Docker网络模式_docker_15
自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

标签:容器,network,--,IP,网络,模式,docker,Docker
From: https://blog.51cto.com/u_14452299/6010721

相关文章

  • Docker-compose(容器编排)
    Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。......
  • mysql主从复制(基于docker容器化)
    拉取镜像不多说,直接从run开始,使用版本mysql5.71.新建主服务器容器实例3307dockerrun-p3307:3306--namemysql-master\-v/mydata/mysql-master/log:/var/log/m......
  • 微服务Docker部署jar包
    Dockerfile内容#基础镜像使用javaFROMjava:8#作者MAINTAINERzzyy#VOLUME指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的......
  • Docker容器数据卷
    Docker容器数据卷是什么?一句话:有点类似我们Redis里面的rdb和aof文件,就是将docker容器内的数据保存进宿主机的磁盘中。Docker容器数据卷能干什么?将运用与运行的环境......
  • docker容器服务archery迁移
    1.容器镜像迁移将Docker容器迁移到另外一台服务器上,最常用的方法是迁移容器关联到的镜像。对于必须迁移的容器,首先使用dockercommit命令将其保存为Docker镜像。docker......
  • Docker数据目录迁移解决方案
    场景在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多,数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移......
  • Docker迁移默认的/var/lib/docker目录
    Docker迁移默认的/var/lib/docker目录发布于2022-06-1018:41:30阅读 5970 安装完Docker后,默认存储路径在/var/lib/docker目录,如果服务器挂载的硬盘不是根目......
  • docker容器部署archery
    1.下载archery安装包https://gitee.com/rtttte/Archery/tags2.安装archery建议在data盘解压安装包,因为会生成log日志等大文件,所以数据盘比较合适tar-zxvfArchery-v1......
  • dockercompose搭建GITLAB上传代码
    1.创建挂载目录:mkdir-p/home/yuexin/gitlab/etc/home/yuexin/gitlab/log/home/yuexin/gitlab/data2.编写dockercomposeversion:'3.7'services:gitlab:im......
  • Docker官方私有仓库registry的安装和使用
    1、下载和安装DockerHub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像仓库,官方也提供Registry镜像。#搜索registrydockersearchregistry#拉取registr......