首页 > 其他分享 >docker网络

docker网络

时间:2023-08-20 13:00:46浏览次数:39  
标签:容器 network -- 主机 网络 docker

一、docker网络

1、docker网络

默认启动的时候,会创建三个网络

docker network ls

docker网络_docker

2、docker network inspect bridge

查看网络 网络的详细信息,包括网络的名称、驱动程序、子网、网关、连接的容器等

docker网络_docker_02


3、docker network create demo

创建网络报错

docker网络_docker_03

解决

docker网络_docker_04

docker网络_docker_05


4、docker network rm demo

删除网络

docker网络_docker_06

二、网络类型

docker网络_docker_07

bridge 模式(默认)docker run --network bridge xxx

host 模式:docker run --network host xxx

none 模式  docker run --network none xxx

1、bridge模式

docker容器在默认情况下,一般会分配一个独立的network-namespace,也就是网络类型中的Bridge模式.

在使用Bridge时就涉及到了一个问题,既然它有独立的namesapce,这就需要一种技术使容器内的端口可以在主机上访问到,这种技术就是端口映射,docker可以指定你想把容器内的某一个端口可以在容器所在主机上的某一个端口它俩之间做一个映射,当你在访问主机上的端口时,其实就是访问容器里面的端口.

  • Docker 中的 “bridge” 网络模式是默认的网络模式,它为容器提供了一种通过 Docker daemon 创建的本地网络。当你在 Docker 中创建一个容器时,如果没有显式指定其他网络模式,它将默认使用 “bridge” 网络模式。
  • 在 “bridge” 网络模式下,Docker daemon 会在主机上创建一个名为 “docker0” 的虚拟网络接口(bridge)。Docker daemon 会为每个容器分配一个唯一的 IP 地址,并通过 NAT(Network Address Translation,网络地址转换)将其连接到主机网络
  • docker run 的时候,没有指定 network 的话默认使用的网桥模式就是 bridge ,使用的就是 docker0 。在宿主机使用 ifconfig 命令就可以看到 docker0 和自己 create 的 network 的 eth0,eth1,eth2……代表网卡一,网卡二,网卡三……,lo 代表127.0.0.1,即 localhost ,inet addr 用来表示网卡的 IP 地址。
  • 网桥 docker0 创建一对对等虚拟设备接口一个叫 veth,另一个叫 eth0 ,成对匹配。
  • 整个宿主机的网桥模式都是 docker0,类似一个交换机有一堆接口,每个接口叫 veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫 veth pair)。
  • 每个容器实例内部也有一块网卡,每个接口叫 eth0 。
  • docker0 上面的每个 veth 匹配某个容器实例内部的 eth0 ,两两配对,一一匹配。

docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8 默认bridge模式


2、host模式

还有一种类型是Host模式,如果在启动容器的时候指定使用Host模式,那么这个容器将不会获得一个独立的network namespace,而是和主机共同使用一个,这个时候容器将不会虚拟出自己的网卡,配置出自己的ip.而是使用宿主机上的ip和端口.也就是说在docker上使用网络和在主机上使用网络是一样的.

docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

  • docker run: 运行一个容器。
  • -d: 在后台运行容器。
  • --network host: 将容器连接到主机网络,这意味着容器将共享主机的网络命名空间,即与主机使用相同的网络接口和 IP 地址。
  • --name tomcat83: 为容器指定一个名为 tomcat83 的容器名称。
  • billygoo/tomcat8-jdk8: 使用镜像 billygoo/tomcat8-jdk8 来创建容器。
  • 使用 “host” 网络模式会直接将容器连接到主机网络,这有一些优点,例如容器可以直接使用主机的网络服务,不需要进行端口映射


3、none模式

还有一种网络类型是None.也就是没有网络,这种情况docker将不会和外界的任何东西进行通讯.

docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8

  • docker run: 运行一个容器。
  • -d: 在后台运行容器。
  • -p 8084:8080: 将容器的 8080 端口映射到主机的 8084 端口,这样可以通过主机的 8084 端口访问容器的 Tomcat 服务。
  • --network none: 将容器连接到不使用任何网络的模式。这意味着容器没有网络连接,也无法访问主机网络或外部网络。
  • --name tomcat84: 为容器指定一个名为 tomcat84 的容器名称。
  • billygoo/tomcat8-jdk8: 使用镜像 billygoo/tomcat8-jdk8 来创建容器。
  • 容器连接到了 “none” 网络模式,容器将无法通过网络进行访问。在这种情况下,你可以在主机上通过访问 http://localhost:8084 或 http://<主机IP地址>:8084 来访问容器中的 Tomcat 服务。需要注意的是,由于容器不与任何网络连接,因此只能通过主机上映射的端口进行访问

三、自定义网络

1、docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

  • docker network create: 创建一个新的 Docker 网络。
  • --driver bridge: 指定网络驱动为 “bridge”,即使用桥接网络模式。
  • --subnet 192.168.0.0/16: 设置网络子网为 “192.168.0.0/16”,即该网络下可以有 65534 个 IP 地址。
  • --gateway 192.168.0.1: 设置网络的网关地址为 “192.168.0.1”,通常是给网络内部的容器分配默认网关地址。

docker网络_docker_08


2、docker network inspect mynet 

docker网络_docker_09


3、docker run -d -P --name centos-net-01 --net mynet -it 5d0da3dc9764 /bin/bash

使用自定义网络创建容器






标签:容器,network,--,主机,网络,docker
From: https://blog.51cto.com/u_14869798/7160734

相关文章

  • 使用-Terraform-创建一个新的Azure-资源组-虚拟网络-子网
    本文主要讲解如何使用Terraform-在AzureCloud中创建一个新的资源组然后在这个资源组中,创建一个虚拟网络-192.168.10.0/24,以及8个/27位子网环境说明:一般都是资源与资源组在一个Location位置中,写法也相对简单一些因此本文,使用了,资源组,与虚拟网络资源不在同一个Location位置的......
  • 设计一个网络通信协议
    [email protected],2023Description设计一个网络通信协议大多数时候,并不需要进行协议设计,只需要使用成熟的协议就行了。但架不住少数时候的存在,所以就需要了解如何去设计一个协议。实际上协议工程学是一门专门的学科,而且互联网络常见......
  • 【Docker实战】使用Docker部署Tomcat
    (【Docker实战】使用Docker部署Tomcat)一、Tomcat介绍1.Tomcat简介Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。2.Tomcat特点Tomcat是一种开源的、轻量......
  • 桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览在前文《浏览器上写代码,4核8G微软服务器免费用,Codespaces真香》中,咱们以一个Java程序员视角体验了GitHub的Codespaces产品的beta版,简单来说有以下两大收获:网......
  • Linux网络编程(epoll的ET模式和LT模式)
    (文章目录)前言本篇文章主要来讲解epoll的ET模式和LT模式,epoll中有两种模式可以选择一种是ET模式(边缘触发模式),另一种是LT模式(水平触发模式)一、ET模式和LT模式概念讲解1.水平触发模式(LT,Level-Triggered)在水平触发模式下,当一个文件描述符上的I/O事件就绪时,epoll会立即通知......
  • Docker容器操作
    1dockerexec这个命令dockerexec是对运行状态的容器进行执行一个命令,exec就是execute的简写,单词就是执行的意思。例如我们基本上容器都是说linux环境下的容器,在linux下我们经常做的事情就是要执行各种shell命令,所以这个命令用到最多的场景是执行一个容器下的bash程序,然后输入一个......
  • 无涯教程-TensorFlow - 递归神经网络
    递归神经网络是一种面向深度学习的算法,它遵循顺序方法。在神经网络中,无涯教程始终假定每个输入和输出都独立于所有其他层。这些类型的神经网络称为递归,因为它们以顺序的方式执行数学计算。表示递归神经网络的示意方法如下所述-实现递归神经网络在本节中,将学习如何使用TensorFl......
  • Docker rootless部署应用
    一、创建普通用户并赋予sudo权限免密切换rootuseraddairechomcwlWS93Kjn0BCL9|passwdair--stdincd/etcchmod600sudoersvisudoers ###################################################################################Samethingwithoutapassword#%whee......
  • 红帽认证RedHat-RHCSA shell的基本应用用户和组管理网络配置和防火墙管理笔记汇总
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • 解决虚拟上docker 启动ES访问不成功
    可能原因是ES太耗内存了,我发现启动了ES容器后,像dockerps这种命令都很慢而且查看日志发现进行垃圾回收出现错误。所以判断可能是因为ES太耗内存。采用以下命令启动容器,应该可以解决。dockerrun-id--nameelasticsearch-d--restart=always-p9200:9200-p9300:9300-v/usr......