如何使用Docker创建自定义网络

2023-10-31

目录

网络模式

1.bridge模式(默认模式--桥接模式)

 初识网络模式

查看桥接模式的特点

2.host模式(仅主机模式)

使用守护进程的方式创建并启动且进入容器

 查看仅主机模式下的网络配置

          端口映射 :​

         3.如何创建自定义网络 


网络模式

Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定

1.bridge模式(默认模式--桥接模式)

docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴,具体操作可参考资料/10)

 初识网络模式

#查看网络模式
ip a
ifconfig

#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge

查看桥接模式的特点

启动一个容器

docker run -di centos:7【或者:docker start 容器名称】

当我们启动一个容器之后,可以通过 docker network inspect bridge 可以看到: 

 当关闭容器之后再通过 docker network inspect bridge 就已经没有了

 解析:

 当我分别启动两个容器之后,可以直观的看到两者ip地址 

通过 docker network inspect bridge 查看:

给两个容器都分配了不同的IP地址

桥接模式的特点:

使用桥接模式,可以使得虚拟服务器都有不同的IP地址。


2.host模式(仅主机模式)

使用守护进程的方式创建并启动且进入容器

docker run -di --name --net=host centos:7

 查看仅主机模式下的网络配置

docker network inspect host 

仅主机模式结论:

不会给容器分配虚拟IP地址。

补充一个知识点:docker rm -f  $(docker ps -aq)【删除所有容器】


还有一个问题,如果docker中有两个tomcat的话,一个怎么做才能区分跑的是哪一个呢?

答:采用桥接模式做端口映射。

端口映射 :

IP地址加上映射端口号即可访问:

浏览器搜索:192.168.3. 128:8081 

OK,访问成功,意味着端口映射成功!

通过 docker network inspect  bridge 可以查看到:

那么使用桥接模式进行端口映射这一块就到这里结束。 


使用仅主机模式启动一个Tomcat,那么就不需要做端口映射了。

docker run -di --name 容器名称 rong--net=host  容器ID

 访问成功!

 结论:

        部署单体应用的时候,可以使用仅主机模式,不需要进行端口映射。

        部署集群应用的时候,比如说Nginx负载个Tomcat时,那么就必须使用桥接模式进行端口映射。

docker run 
-di 
-v /chenchen/softpath/mydocker:/home/chenchen/docker -p 8083:8080 --name t10 
--net=bridge
--restart=always 2d2bccf89f53

#查看网络
docker network inspect mynetwork

 命令解析:

 

 启动成功!访问成功! 


         3.如何创建自定义网络 

为什么需要自定义网络,因为当使用docker引擎进行部署项目在容器中之后,会被分配随机IP,当关闭之后再开启时,所被分配的IP地址极大可能会不一样。那么

步骤:

#创建自定义网络【这一行命令时创建网桥】
docker network create --subnet=172.18.0.0/16 mynetwork

作用:创建容器的时候可以指定IP地址

创建容器

docker run -it --name tomcat8 --net=mynetwork -v /chenchen/software/mydocker/:/home/chenchen/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash

 

 

OK成功。因为不是守护进程的方式运行,所以现在换个控制台继续操作。 

成功啦!

如何删除自定义网络mynet(没有容器使用)

docker network rm mynet 

 本篇内容分享完毕,我们下期再见!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Docker创建自定义网络 的相关文章

随机推荐

  • stm32如何设置蜂鸣器温度报警_基于 51 单片机无线 RF433M 传输胎压监测 GSM 短信报警设计...

    功能介绍 发射机组成 STC89C52RC BMP180 大气压模块 RF433Mhz 无线模块 接收机组成 STC89C52RC RF433Mhz 无线模块 SIm800CGSM 模块 蜂鸣器 按键 功能描述 两个发射分别采集大气压信息和
  • Ubuntu添加交叉编译成功

    先把arm linux那个包复制到自己建的文件夹 自己建文件夹mkdir min 复制cp r arm linux home lin min 查看路径的命令为pwd sudo vim etc profile 在最后添加 export PAT
  • 洛谷 P1746 离开中山路

    https www luogu com cn problem P1746 contestId 67264 AC代码 include
  • 数字IC手撕代码-异步复位同步释放

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 用vscode写c语言输出中文全变成问号

    重新写一份一模一样的代码
  • unity之NetworkManager应用初级

    简单学过Socket的人都知道用Socket完成一个完整的游戏非常的困难 但如果只是想简单的完成一个传输 unity已经写好了一个非常实用的东西NetworkManager 对于初学者来说他还有一个很方便的ui和上面那个脚本放在一起就会出现
  • Python Train_出乎意料的简单!10分钟用python建立人工智能预测模型

    介绍 鉴于Python在过去几年中的兴起及其简洁性 对于数据科学领域的Python学家意义重大 这篇文章会用最容易的方式引导你更快地构建第一个预测模型 出乎意料的简单 10分钟用python进行人工智能建立预测模型 揭秘预测建模的过程 我一
  • QT+CEF(Chromium嵌入式框架)环境搭建,CEF库libcef_dll_wrapper.lib编译

    上一章使用qt自家的QWebEngineView实现浏览器 存在一定兼容性和稳定性问题 https blog csdn net weixin 40355471 article details 120698537 本章将使用开源的CEF Ch
  • 寒假:HTML

    图片导入 lt img src 图片导入的位置 width 宽度 height 高度 alt 图像的替代文字 title 鼠标悬停提示文字 gt 超文本链接 lt a href target 目标窗口位置 gt 链接文本或图像 视频元素
  • 原生小程序用vant组件自定义底部导航

    在根目录中创建custom tab bar 新建page index 在app json或index json中引入vant组件 usingComponents van tabbar vant weapp tabbar index van
  • 程序员的代码行数越少越好?

    代码行数越少越好 读懂别人的代码很困难 如何编写出 完美 的代码 每天要坚持8小时编程 拜托 这些编程误区程序员应该尽早知道 作为开发人员 你会听到许多有关 代码行数 的令人难以置信的疯狂理论 不要相信他们 以代码行数作为决策依据是一件非常
  • ew schema is incompatible with the current setting value. Invalid value for type in block

    shopify开发报错 New schema is incompatible with the current setting value Invalid value for type in block 84341d56 61dc 4c39
  • 第三课 C++ 教程:char 和 int 是 C++ 中常见的数值类型,以及常用格式化说明符

    第三课 C 教程 char 和 int 是 C 中常见的数值类型 以及常用格式化说明符 学习目标 在本教程中 我们将学习以下内容 数值类型 char short 和 int 的区别和使用 sizeof 运算符的作用 无符号整数 unsign
  • 找出数组中三个数之和为0的组合

    找出数组中三个数之和为0的组合 题目 思路 代码 题目 给定一个无序可重复整数序列 当该序列中任意三个数的和等于0 输出这三个数 如 序列nums 1 0 1 2 1 4 输出 1 0 1 1 1 2 思路 首先对数组不同位进行两两结合 在
  • 我的串口打印之坑——8266os_printf()适用于NONOS_SDK,故在自动生成APP代码中不能打印,要用uart0_sendStr( )函数(4)

    说到用安信可串口调试助手打印信息 首先明确esp8266nodeMCU有uart0 GPIO13 GPIO15 uart1 GPIO3 GPIO0 接下来 编程时候 1 首在user init 中先初始化uart init void ICA
  • JAVA面向对象的思想

    java面向对象 什么是面向对象思想 什么是面向对象 类和对象 类 对现实世界中某类事物的描述 是抽象的 概念上的定义 对象 事物具体存在的个体 抽象类 接口 成员变量和局部变量的区别 作用域 存储位置 初始值 构造方法 面向对象三大特性
  • Java的类加载器

    类加载是java语言提供的最强大的机制之一 尽管类加载并不是讨论的热点话题 但所有的编程人员都应该了解其工作机制 明白如何做才能让其满足我们的需 要 这能有效节省我们的编码时间 从不断调试ClassNotFoundException Cla
  • 代理IP与Socks5代理

    一代理IP 多地区数据采集的智能引擎 多地区市场了解 代理IP允许爬虫模拟多个地区的IP地址 实现对不同市场的数据采集 这为跨界电商深入了解不同地区需求 趋势提供了数据基础 规避反爬虫策略 许多网站采用反爬虫技术 限制频繁访问 代理IP通过
  • JavaWeb的Servlet的两种配置

    Servlet接口 要成为一个Servlet 需要实现Servlet接口 为了方便 可以继承HttpServlet HttpServlet实现了Servlet接口 Servlet生命周期 在Tomcat中Servlet是单例的 Servle
  • 如何使用Docker创建自定义网络

    目录 网络模式 1 bridge模式 默认模式 桥接模式 初识网络模式 查看桥接模式的特点 2 host模式 仅主机模式 使用守护进程的方式创建并启动且进入容器 查看仅主机模式下的网络配置 端口映射 3 如何创建自定义网络 网络模式 Doc