首页 > 其他分享 >Docker07-docker网络

Docker07-docker网络

时间:2024-05-10 10:01:05浏览次数:21  
标签:容器 network -- 网络 Docker07 docker Docker

docker网络模式

1、bridge模式,--net=bridge(默认,可省略)
2、host模式,--net=host
3、container模式 使用--net =container:指定容器名
4、none模式,--net=none
5、overlay

overlay

Docker原生的跨主机多子网模型

底层需要etcd这样的KV存储系统进行消息同步,核心是通过linux网桥与vxlan隧道实现跨主机划分子网

每创建一个网桥,Docker会在主机上创建一个沙盒(实质是Network Namespace),在沙盒中创建名为br0的网桥,在网桥上增加vxlan接口。vxlan接口有一个ID号(256-1000),相同ID号的vxlan可以通信。当添加一个容器到某网络上时,Docker会创建一对veth pair,一端接br0网桥,一端接容器的Network Namespace,并将br0的IP设为容器的网关,实现容器加入网络的目的

Docker创建的沙盒保存在/var/run/docker/netns/46acfc9bbb77 
ln -s /var/run/docker/netns/46acfc9bbb77 /var/run/netns/46acfc9bbb77
ip netns exec 46acfc9bbb77  ip addr show

9df4b04731b90f23f531bacc91eab4d2.png

bridge

Docker的NAT网络模型

Docker网络的默认模式,Docker daemon启动时,会创建docker0网桥
容器启动时,Docker会创建一对veth pair(虚拟网络接口)设备,它的特点是成对出现,从一端进入的数据会同时出现在另一端
Docker会将一端挂载到docker0网桥上,另一端放入容器的Network Namespace
默认子网 172.17.42.1/16

ip addr show docker0
route -n
brctl show

host

与主机共享Network Namespace,容器不会创建自己的网卡,配置IP等,而是使用宿主机的IP和端口。而文件系统和进程列表还是和宿主机隔离,不安全

docker run -it --net=host nginx:latest bash
容器的网络配置信息与所在的主机完全相同。容器可以操纵主机的网络配置。
如果重复运行一个容器,并使用相同端口,则不可行,因为端口被占用

container

与另一个运行中的容器共享network namespace,容器不会创建自己的网卡,配置IP等,而是使用指定容器的IP和端口。两个容器的文件系统和进程列表还是隔离的

将容器B运行在容器A的网络模式上,容器A使用briage网络模式
docker run --net=container:containerA -itd --name=containerB busybox

如果用docker network inspect bridge查看bridge网络,不会看到容器containerB运行在该网络
连上containerB看看网络信息,发现containerB和containerA的网络接口信息完全相同,说明两个容器共享一个网卡eth0

none

docker不会为容器配置网卡和IP,需要我们自行配置网卡和IP

docker run -it --net=none nginx ip addr show
此模式下创建的不会创建网络,容器里只有lo口
此模式的容器不能互相通信,或与外部通信
用户仍然可以手动配置网络,若想使用pipework手工配置指定docker容器的ip地址,必须要在none模式下才可以

创建网络模型,自定义名字

docker network create docker03 --subnet=172.30.0.0/16 -o com.docker.network.bridge.name=docker03
新建docker01网络模型
docker  network  create  --subnet=172.30.0.0/16 docker01
docker  network  list 
docker  network   inspect   docker01

使用自定义网桥启动容器并映射端口
docker  run  -itd  --network=docker01  -p 8080:80  nginx

docker  network   create   --driver  bridge  docker02  

标签:容器,network,--,网络,Docker07,docker,Docker
From: https://www.cnblogs.com/lixunblogs/p/18167363

相关文章

  • Docker01-安装Docker
    Docker安装脚本yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyumcleanallyummakecacheyum-yinstalldocker-cesystemctlstartdockersystemctlenab......
  • centos制作具备telnet和ping功能的docker镜像
    第一步:制作Dockerfile   Dockerfile具体内容如下所示#使用官方CentOS镜像作为基础镜像FROMcentos:7#安装telnetRUNyum-yupdate&&yumcleanall&&\yum-yinstalltelnet&&\yumcleanall#安装pingRUNyum-yupdate&&yumclean......
  • Linux问题--docker启动mysql时提示3306端口被占用(kill不掉3306端口)
    使用kill-9杀掉mysqld服务时一直失败。mysql启动时会启动mysqld和mysqld_safe两个进程,当使用kill-9杀掉mysqld进程时,mysqld_safe会自动重新启动mysqld。当使用正常方式退出mysqld时,mysqld_safe也会退出。如果需要kill掉mysqld服务可以先通过lsof-i:3306查询到占用3306......
  • docker 容器查看jvm参数配置
    1、登录服务器查看有哪些容器dockerps2、进入到相应的容器中dockerexec-it容器ID或名称bash3、找到java线程top 4、使用jcmd查询java也就是jvm的配置jcmdPIDVM.flags这里我查看的是线程1:jcmd1VM.flags 复制信息出来,格式化,具体参数什么意思,可网......
  • docker打包前端项目/flask项目
    1.docker安装我安装的是dockerdesktop安装完成后$docker-v$Dockerversion26.0.0,build2ae903e同时也可以打开图形界面看2.前端打包配置Dockerfile放在前端项目根目录配置nginx.conf放在前端项目根目录---Dockerfile#设置Node.js版本FROMnode:20.12.2#设置容器工......
  • docker的部署
    Docker安装docker环境查看bear@bear:~$cat/etc/os-releaseNAME="Ubuntu"VERSION="20.04.3LTS(FocalFossa)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu20.04.3LTS"VERSION_ID="20.04"HOME_URL="https://www.ubunt......
  • docker_test
    WelcometoHexo!Thisisyourveryfirstpost.Checkdocumentationformoreinfo.IfyougetanyproblemswhenusingHexo,youcanfindtheanswerintroubleshootingoryoucanaskmeonGitHub.QuickStartCreateanewpost$hexonew"MyNewPost&q......
  • Docker in Docker for wandb agent
    IntroLikeportainer,toisolatethewand-agentruntimeenvironmentinsidecontainer(dockernize)withoutlosingtheabilitytofullyaccesshostresources(commencedockerrun),wemustexposethehostdockersockettothewandb-agentcontainer.dockerrun......
  • 内网渗透测试是一种测试组织内部网络安全的方法,旨在发现和利用网络中的漏洞以及获取未
    内网渗透测试是一种测试组织内部网络安全的方法,旨在发现和利用网络中的漏洞以及获取未授权访问内部资源的能力。以下是内网渗透测试基础的一些主题:理解内网环境:理解目标组织的网络拓扑、子网划分、主机和服务。收集有关内部网络设备、操作系统、应用程序和安全配置的信......
  • 对于Docker和Podman的一点使用经验
    前言:本文会以多个实际的线上例子,分享自己对于Docker和Podman的一点使用经验及踩过的坑,希望对读者有一点帮助。本文bash脚本初步加工后可直接使用(兼容mac和linux系统),对于关键点会有注重说明,但是对于一些细节需要读者自行去查阅相关文档,这里不会具体展开。一、部署Apollo1、docke......