当前位置: 首页 > news >正文

docker之DockerFile与网络

目录

DockerFile

构建步骤

基础知识

指令

实战:构建自己的centos

第一步:编写dockerfile文件

第二步:构建镜像文件

docker网络

原理

功能

网络模式

host模式

container模式

none模式

bridge模式


DockerFile

dockerfile 是用来构建docker镜像的文件,是一个命令参数脚本

构建步骤

        1、编写一个 dockerfile 文件

        2、docker build 构建成为一个镜像

        3、docker run 运行镜像

        4、docker push 发布镜像(DockerHub 、阿里云仓库)

基础知识

        1.每个保留关键字都是尽量大写字母

        2.执行从上到下按顺序执行

 

        3.#表示注释

        4.每一个指令都会创建提交一个新的镜像层,并提交

指令

 

实战:构建自己的centos

        通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim和net-tools工具。首先在/home/dockfile 目录下新建文件mydockerfile-centos。然后使用上述指令编写该文件

第一步:编写dockerfile文件

FROM centos:7                            #基础镜像         
MAINTAINER CQ<1462568882@qq.com>        #维护者信息
 
ENV MYPATH /usr/local                    #环境变量目录 k-v
WORKDIR $MYPATH                          #工作目录  用$取k
 
RUN yum -y install vim                   #执行构建命令  安装vim
RUN yum -y install net-tools             #执行构建命令  安装net-tools
 
EXPOSE 80                                #暴露端口 80
 
CMD echo $MYPATH                         #输出构建信息 mypath
CMD echo "---end---"                     #输出信息
CMD /bin/bash                            #进入/bin/bash命令行

第二步:构建镜像文件

构建镜像命令:docker build -f dockerfile文件路径 -t 镜像名[:版本号] .(这里有个小点.)

docer build -f mydockerfile-centos -t mycentos:0.1 .

-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。

如果不指定,默认的标签就是latest。

最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

docker网络

Docker网络是Docker平台中用于管理容器之间网络通信的组件。它提供了一种简单而灵活的方式来创建、管理和配置Docker容器的网络

原理

        在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

        Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器

功能

        1.自动分配IP地址:Docker能够为每个容器分配一个独立的IP地址,使得容器之间可以通过IP地址进行通信。

        2.默认网桥:Docker在宿主机上创建一个名为docker0的网桥,它会自动将容器连接到该网桥上,从而使得容器之间可以通过网桥进行通信。

        3.网络配置:Docker允许用户自定义容器的网络配置,包括指定网络类型、指定网络端口等。

        4.网络插件:Docker支持插件机制,可以通过插件扩展网络功能。

网络模式

安装Docker时,它会自动创建三个网络。bridge、 none 、host。

可以使用以下docker network ls命令列出这些网络:

 该bridge网络代表docker0,所有Docker安装中存在的网络。除非你使用该docker run --network=选项指定,否则Docker守护程序默认将容器连接到此网络。

我们在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:

        host模式:使用 --net=host 指定。

        none模式:使用 --net=none 指定。

        bridge模式:使用 --net=bridge 指定,默认设置。

        container模式:使用 --net=container:NAME_or_ID 指定

host模式

启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace(虚拟网络),而是和宿主机共用一个Network Namespace(虚拟网络)。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

container模式

        Docker的网络container模式是指将容器与另一个已经存在的容器共享同一个网络命名空间。这种模式下,两个容器可以直接通过网络通信,无需进行额外的网络配置。

        使用container模式时,Docker会创建一个新的网络命名空间,并将其与目标容器共享。新容器内的网络接口会与目标容器的网络接口进行关联,从而实现网络通信。

        使用container模式可以方便地将多个容器连接在一起,形成一个共享的网络环境。同时,由于容器之间共享网络命名空间,所以它们的网络性能和效率也得到了提高。

        需要注意的是,如果目标容器在关闭或崩溃时,新容器也会失去网络连接。此外,container模式不支持多主机之间的容器网络通信。

none模式

        使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

        这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

bridge模式

        Docker的网络bridge模式是一种默认的网络配置方式,它会在Docker守护进程启动时自动创建一个名为docker0的网桥,并将所有新创建的容器连接到该网桥上。

        在bridge模式下,每个容器都会分配一个独立的网络命名空间,并拥有一个独立的IP地址。容器之间通过网桥进行通信,通信数据会被自动转发。

        使用bridge模式时,Docker会为每个新创建的容器分配一个独立的Network Namespace,并将容器与docker0网桥相连。容器内的网络接口会自动与网桥进行关联,从而实现网络通信。

        此外,bridge模式还支持端口映射功能,允许将容器内的网络端口映射到宿主机上的端口,从而实现外部对容器内的应用程序进行访问。

相关文章:

docker之DockerFile与网络

目录 DockerFile 构建步骤 基础知识 指令 实战&#xff1a;构建自己的centos 第一步&#xff1a;编写dockerfile文件 第二步&#xff1a;构建镜像文件 docker网络 原理 功能 网络模式 host模式 container模式 none模式 bridge模式 DockerFile dockerfile 是用来…...

知识蒸馏开山之作(部分解读)—Distilling the Knowledge in a Neural Network

1、蒸馏温度T 正常的模型学习到的就是在正确的类别上得到最大的概率&#xff0c;但是不正确的分类上也会得到一些概率尽管有时这些概率很小&#xff0c;但是在这些不正确的分类中&#xff0c;有一些分类的可能性仍然是其他类别的很多倍。但是对这些非正确类别的预测概率也能反…...

centos 7 安装 docker-compose curl 设置代理

sudo curl -x “http://192.168.1.2:3128” 需要验证的代理 sudo curl -x “http://username:password192.168.1.2:3128” 1.下载 sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/lo…...

3D姿态相关的损失函数

loss_mpjpe: 计算预测3D关键点与真值之间的平均距离误差(MPJPE)。 loss_n_mpjpe: 计算去除尺度后预测3D关键点误差(N-MPJPE),评估结构误差。 loss_velocity: 计算3D关键点的速度/移动的误差,评估运动的平滑程度。 loss_limb_var: 计算肢体长度的方差,引导生成合理的肢体长度…...

ChatGPT取代人类仍然是空想?有没有一种可能是AI在迷惑人类

ChatGPT自从去年发布以来&#xff0c;就掀起了这些大语言模型将如何颠覆一切的激烈讨论&#xff0c;从为学生写作文、输出SEO文章&#xff0c;甚至取代谷歌成为世界上最受欢迎的搜索引擎&#xff0c;影响领域无所不包&#xff0c;甚至可能取代编剧、小说家和音乐家等从事创意工…...

基于swing的旅游管理系统java jsp旅行团信息mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的旅游管理系统 系统有1权限&#xff1a;管…...

Windows wsl2支持systemd

背景 很多Linux发行版都是使用systemd来管理程序进程&#xff0c;但是在WSL中默认是用init来管理进程的。 为了符合长久的使用习惯&#xff0c;且省去不必要的学习成本&#xff0c;就在WSL的发行版&#xff08;我这里安装的是Ubuntu20.04&#xff09;中支持systemd&#xff0…...

NLP - 如何解决ModuleNotFoundError: No module named ‘jieba‘的问题

错误描述 在JUPYTER中&#xff0c;使用结巴分词&#xff0c;出错&#xff1a; ModuleNotFoundError: No module named jieba解决方案 在 Anaconda Prompt 中&#xff0c;执行以下指令&#xff08;可以解决&#xff09;&#xff1a; pip install jieba -i https://pypi.tuna…...

Windows10上VS2022单步调试FFmpeg 4.2源码

之前在 https://blog.csdn.net/fengbingchun/article/details/103735560 介绍过通过VS2017单步调试FFmpeg源码的方法&#xff0c;这里在Windows10上通过VS2022单步调试FFmpeg 4.2的方法&#xff1a;基于GitHub上ShiftMediaProject/FFmpeg项目&#xff0c;下面对编译过程进行说明…...

【tkinter 专栏】菜单组件

文章目录 前言本章内容导图1. Menu 菜单组件Menu 组件的基本使用制作二级下拉菜单为菜单添加快捷键2. Treeview 树形菜单组件Treeview 组件的基本使用菜单项的获取与编辑前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISBN: 9787569275001)…...

【LeetCode-经典面试150题-day10】

目录 242.有效的字母异位词 49.字母异位词分组 202.快乐数 219.存在重复元素Ⅱ 383.赎金信 205.同构字符串 290.单词规律 242.有效的字母异位词 题意&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和…...

Transformer在医学影像中的应用综述-分类

文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer)&#xff1a;利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…...

新服务器基本环境下载conda + docker + docker-compose + git

文章目录 Ubuntu 允许root用户登录 centos无所谓condadockerubuntucentos docker-compose官方下载docker-compose国内镜像 gitUbuntuCentos Ubuntu 允许root用户登录 centos无所谓 # 以普通用户登录系统&#xff0c;创建root用户的密码 sudo passwd root# SSH 放行 sudo sed -…...

Matlab论文插图绘制模板第108期—特征渲染的标签散点图

在之前的文章中&#xff0c;分享了Matlab标签散点图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下特征渲染的标签散点图的绘制模板&#xff0c;以便再添加一个维度的信息。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中…...

设计模式之中介者模式(Mediator)的C++实现

1、中介者模式的提出 在软件组件开发过程中&#xff0c;如果存在多个对象&#xff0c;且这些对象之间存在的相互交互的情况不是一一对应的情况&#xff0c;这种功能组件间的对象引用关系比较复杂&#xff0c;耦合度较高。如果有一些新的需求变化&#xff0c;则不易扩展。中介者…...

css弹性布局的方式

概述 任何一个容器都可以定义为弹性布局容器&#xff0c;使用display:flex(display:inline-flex)开启弹性布局。 2个方向轴&#xff1a;水平主轴和垂直交叉轴 6个容器属性 1.flex-direction &#xff1a;主轴的方向 2.justify-content&#xff1a;子元素在主轴的对齐方式 …...

阿里云源 Python、npm、git、goproxy

阿里云源 Python、npm、git、goproxy 各种设置源的方式也都比较常见&#xff0c;但是根本记不住&#xff0c;每次都查感觉也不太好。 正好发现了个宝藏地址&#xff0c;看起来还挺全的&#xff0c;以后找源也可以先在这个地方翻翻&#xff0c;顺便就搞了几个放到一个脚本里边…...

微服务架构1.0

微服务架构 微服务架构是一种应用程序架构模式&#xff0c;将一个应用程序划分为一组小型、独立、自治的服务&#xff0c;每个服务专注于一个特定的业务功能。 每个微服务都可以独立开发、部署、扩展和维护&#xff0c;通过定义良好的接口和协议&#xff0c;它们可以相互通信…...

iOS开发Swift-基础部分

1.常量 let maxNum 10 //单个常量赋值 let maxNum 10&#xff0c; minNum 2 //多个常量赋值用逗号隔开2.变量 var x 0.0 //单个变量赋值 var x 0.0&#xff0c; y 0.1 //多个变量赋值用逗号隔开3.类型注解 系统可通过赋初始值进行自动推断。 var name&#…...

【LeetCode-经典面试150题-day11】

目录 128.最长连续序列 228.汇总区间 56.合并区间 57.插入区间 452.用最少数量的箭引爆气球 128.最长连续序列 题意&#xff1a; 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并…...

力扣原题《长度最小的子数组》,有序版(理想版最大值查找)纯手搓,已验证,方差版(考虑元素离散,大值周围全是小值的情况)在下一篇

理想版&#xff0c;大值周围是大值 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例…...

深入OpenBMC散热控制:从IPMI命令到D-Bus,揭秘手动与自动模式切换

深入OpenBMC散热控制&#xff1a;从IPMI命令到D-Bus&#xff0c;揭秘手动与自动模式切换 在数据中心和服务器运维领域&#xff0c;散热控制一直是系统稳定性的关键因素。OpenBMC作为开源基板管理控制器&#xff0c;其散热管理机制直接影响到服务器的可靠性和能效比。本文将带您…...

Vue3 的 JSX 函数组件,每次更新都会重新运行吗?

我用最直白、最无歧义、100%准确的方式&#xff0c;只回答你这一个问题&#xff1a; ✅ 最终答案&#xff08;背它&#xff09; 在 Vue3 中&#xff1a; 你写的 JSX 函数组件&#xff0c;整个函数 只会在组件初始化时运行 1 次&#xff01; 更新时&#xff0c;整个函数 不会重新…...

AI 大模型落地系列|Eino 组件核心篇:ChatTemplate 为什么不是字符串拼接

声明&#xff1a;本文数据源于官方文档与官方实现&#xff0c;重点参考 ChatTemplate 使用说明。 为什么很多人学 Eino 后&#xff0c;写 Prompt 时还是把 ChatTemplate 用成了字符串拼接&#xff1f;1. ChatTemplate 是什么&#xff0c;不是什么2. 接口虽短&#xff0c;但起的…...

泰克TBS2000示波器保存功能全攻略:从U盘插入到图片导出(附最佳格式选择)

泰克TBS2000示波器高效保存指南&#xff1a;从硬件操作到专业文档整合 在电子工程实验室的日常工作中&#xff0c;波形数据的保存与共享是每个工程师都会遇到的高频需求。传统用手机拍摄屏幕的方式不仅画质堪忧&#xff0c;还常常因为反光、角度偏差导致关键参数无法辨识。泰克…...

医疗文本处理实战:用jieba分词器搞定妇科专业术语分词(附完整词典配置)

医疗文本处理实战&#xff1a;用jieba分词器精准解析妇科专业术语 在医疗信息化和自然语言处理领域&#xff0c;专业术语的准确识别一直是技术难点。特别是妇科临床文本中&#xff0c;"妇科凝胶"、"宫颈刮片"等复合型专业词汇的切割问题&#xff0c;直接影…...

计算机毕业设计springboot基于的游戏后台管理系统 基于SpringBoot的网游运营管理平台的设计与实现 基于SpringBoot架构的电子竞技服务支撑系统的设计与实现

计算机毕业设计springboot基于的游戏后台管理系统&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展和智能终端设备的全面普及&#xff0c;游戏产业已迅速…...

Nano Banana API 来了:不到半价享官方同款品质,仅需约 ¥0.10/张!

最近被谷歌新发布的 Nano Banana&#xff08;Gemini 2.5 Flash Image&#xff09;图像生成模型 霸屏了。 从手办秒变真人级 Cosplay&#xff0c;到一键统一多图风格&#xff0c;从个性化头像到产品概念设计&#xff0c;甚至连静态画作都能一键生成电影级动态分镜——这波 AI 生…...

Windows资源管理器终极美化指南:一键添加惊艳毛玻璃效果

Windows资源管理器终极美化指南&#xff1a;一键添加惊艳毛玻璃效果 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica …...

简易CPU设计入门:算术逻辑单元(五)

专栏导航 上一篇&#xff1a;简易CPU设计入门&#xff1a;算术逻辑单元&#xff08;四&#xff09; 专栏目录 下一篇&#xff1a;简易CPU设计入门&#xff1a;算术逻辑单元&#xff08;六&#xff09; 项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了&am…...