docker的学习(二):docker常用的高级技术总结

news2024/9/20 21:52:55

简介

docker的一些知识点的总结

UnionFS

分层,轻量级,高性能的文件系统,支持一层层的叠加功能来修改文件系统。
一次同时加载多个文件系统,把各层文件系统叠加起来,最终文件系统会包含所有底层的文件和目录,这对于外部来说,是一个叠加起来的文件系统。

docker原理

docker镜像的基础就是unionfs文件系统,镜像可以通过分层来继承,基于基础镜像,制作各种具体的应用镜像。

docker镜像最底层是引导文件系统bootfs,它包含boot加载器和内核。
在bootfs层之上是rootfs,它就是各种不同的操作系统的发行版,如centos。

docker镜像层都是只读的,容器层是可写的。
当一个容器启动时,一个新的可写层被加载到镜像的顶部,这个可写层就是容器层。

镜像分层的好处

共享资源,方便复制迁移,复用
在镜像中,每一层都可以被共享。

docker commit

docker commit -m=“提交信息” -a=“作者” 容器id 创建的目标镜像名 标签名:提交容器副本让它成为一个新的镜像。
可以通过这个命令,在原来的镜像上,叠加层,给镜像添加新的功能(每层都是新的功能),然后创建出带有新的功能的镜像。
注意
在命令中,是容器id,也就是说,要先通过原来的镜像,创建出容器,在容器上添加新的功能,然后执行commit命令,就会生成一个新的镜像。

容器数据卷

卷,即目录或者文件,由docker挂载到容器,设计的目的是数据的持久化,完全独立于容器的生存周期,因此docker删除的时候,其挂载的容器卷不会被删除。
容器卷是指在宿主机上的一个目录或文件,被映射到容器中的一个目录,从而实现宿主机和容器之间的数据共享和持久化存储。

使用

docker run -it --privileged=ture -v /宿主机绝对路径目录:/容器内目录 镜像名:运行一个带有容器卷存储功能的容器

参数:

  • –privileged=true:可以使容器内的root拥有真正的root权限
  • ro:容器只读不能写,适用于多个容器映射同一个数据卷时

可以通过 docker inspect 容器id输出的信息中的mounts中查看

作用

容器数据卷的作用:

  • 可以在容器之间共享或重用数据
  • 卷中的数据更改可以直接实时生效
  • 数据卷的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

就算容器stop停止了,在挂载的容器数据卷中修改文件目录,然后容器启动,docker中的数据也会更新。

卷的继承和共享

新启动的容器可以继承一个容器的卷规则。
docker run -it --privileged=true --volumes-from 父类容器名 --name 容器名 镜像名
使用后类似于共享一个宿主机的数据卷。
期间,如果父类容器停止了,新的容器挂载容器卷也是没有影响的。

dockerfile

dockerfile是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
dockerfile定义了进程需要的一切东西,包括执行代码或文件,环境变量,依赖包,运行时环境,动态链接库,操作系统的发行版,服务进程和内核进程等等。

基本知识点

  • 每条保留字指令都必须大写,后面至少要带一个参数
  • 指令从上到下顺序执行
  • #是注释符
  • 每条指令都会创建一个新的镜像层并对镜像进行提交

常用的保留字指令

FROM

源头是什么,即当前新镜像是继承哪个基础父类,指定一个已经存在的镜像作为模板,放在第一行。

MAINTAINER

镜像维护者的姓名和邮箱

RUN

容器构建的时候运行的命令,即在docker build时运行。

EXPOSE

当前容器对外暴露出的端口

WORKDIR

指定在创建容器后,终端登录进来时的默认工作目录

USER

指定该镜像以什么样的用户去执行,默认是root

ENV

在构建镜像过程中设置环境变量,类似于dockerfile中的变量

ADD

将宿主机目录下的文件拷贝进容器,会自动处理URL和解压tar包

COPY

类似于ADD,拷贝文件和目录到镜像中
一般ADD比较常用

VOLUME

容器数据卷,用于数据保存和持久化工作

CMD

指定容器启动后要干的事。和RUN相似。
可以有多个CMD指令,但只有最后一个生效,而且会被docker run命令后面的参数替换。
RUN是在docker build构建镜像的时候运行
CMD是在docker run的时候运行

变参使用CMD,和entrypoint一起使用的时候,CMD是等于给entrypoint传参的。
简单的理解,就是,docker run的时候,如果没有指定参数,那么cmd里面的内容就会传递给entrypoint;docker run的时候,如果加了参数,那么会替换cmd里面的内容,然后传递给entrypoint。

ENTRYPOINT

也是用来指定容器启动时要运行的命令
类似于CMD指令,但不会被docker run命令后面的参数替换。并且这些参数会被ENTRYPOINT指令指定的程序当成参数。

虚悬镜像

仓库名,标签都是< none >的镜像,可能有风险的,一般要删掉

docker image ls -f dangling=true:可以查询出虚悬镜像
docker image prune:可以删除虚悬镜像

部署微服务

如果公司使用云原生技术,即一切在云端,处处皆容器。那么使用springboot开发的项目,然后通过dockerfile发布微服务部署到docker容器。

打包成jar包

使用maven的package命令把微服务打包成jar包。

上传jar包

把微服务的jar包上传到服务器

编写Dockerfile

FROM java:8
MAINTAINER christ
VOLUME /tmp
ADD spring_boot_docker-0.0.1-SNAPSHOT.jar christ.jar
RUN bash -c 'touch /christ.jar'
ENTRYPOINT ["java","-jar","/christ.jar"]
EXPOSE 8801

构建镜像

docker build -t christ_docker:1.1:构建一个名为christ_docker:1.1的镜像

运行容器

docker run -d -p 8801:8801 christ_docker:1.1:启动容器。

docker 网络

开启docker服务后,默认创建3大网络模式
docker network ls:查看网络
在这里插入图片描述
其他的网络相关命令:
docker network inspect 网络名:查看网络源数据
docker network rm 网络名:删除网络

docker 网络的作用

  • 容器间的互联和通信以及端口映射
  • 容器ip变动时可以通过服务名直接网络通信而不受影响

docker常用的网络模式

  • bridge:为每一个容器分配,设置ip等,并将容器连接到一个docker0,虚拟网桥,默认模式。使用–network bridge指定
  • host:容器不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机的ip和端口。使用–network host指定
  • none:容器有独立的network namespace,但并没有对其进行任何网络设置。使用–network none指定
  • container:新创建的容器不会创建自己的网卡和配置自己的ip,而是和一个指定的容器共享ip,端口范围等。使用–network container:容器id指定

docker容器内部的ip有可能会变化,如果乱了,那调用可能会出错,所以需要我们去规划网络。

自定义网络模式

通过docker network create 网络模式名来自定义桥接网络,默认使用的是桥接网络bridge,启动容器的时候通过--network 自定义网络模式名参数指定网络模式,容器之间的调用就可以通过服务名来调用了(这样,就算容器内部ip变化,也可以调用而不会出错),因为自定义网络本身就维护了主机名和ip的对应关系。
注意:如果启动容器的时候直接指定bridge模式的话,是不可以使用服务名来调用的。

docker compose

docker compose,负责实现对docker容器集群的快速编排。
可以管理多个docker容器组成的一个应用,需要定义一个yaml的配置文件docker-compose.yml,写好多个容器(即服务)之间的调用关系,就可以一次性启动或关闭这些容器。
需要下载docker compose,然后更改执行权限。

compose常用命令

docker-compose up:启动所有docker-compose服务
docker-compose up -d:启动所有docker-compose服务并后台运行
docker-compose down:停止并删除容器,网络,数据卷等
docker-compose ps:展示docker-compose编排过得运行的所有容器
docker-compose top:展示docker-compose编排过容器进程
docker-compose logs yuml服务id:查看容器日志
docker-compose config:检查配置
docker-compose config -q:检查配置,有问题输出
docker-compose restart:重启服务
docker-compose start :启动服务
docker-compose stop:停止服务
注意:这些命令最好在docker-compose.yml目录路径下去执行,在服务不多的时候(10个左右)可以使用这个,再更多服务的话就要使用k8s了。

portainer

管理docker环境的图形化界面工具。方便我们对docker单机或者集群的管理,监控和统计。

– restart=always

docker run指令后面的参数,加上 – restart=always参数,可以让这个容器服务在docker启动的时候跟着启动。

CIG

重量级的docker监控工具,有点类似于elk,注重于监控docker的运行时的环境(cpu,内存,io等)的监控。
类似于docker status命令展示的信息,但是docker status的数据是实时的,没有地方存储数据,没有健康预警功能。
CIG是三个工具的组合:

  • CAdvisor监控收集数据
  • InfluxDB存储数据
  • Granfana页面展示

不过现在这两个监控都有点过时了,一般是使用k8s了的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【java SE语法篇】1.运算符

目录 1. 运算符和表达式2. 算数运算符3. 隐式转换4. 强制转换5. 自增自减运算符6. 赋值运算符7. 扩展运算符8. 关系运算符9. 逻辑运算符9.1 & 和 | 的使用&#xff1a;9.2 ^&#xff08;异或&#xff09;的使用&#xff1a;9.3 !&#xff08;取反&#xff09;的使用&#x…

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展&#xff0c;大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求&#xff0c;培养高素质的大数据技术人才&#xff0c;技校作为职业教育的重要阵地&#xff0c;亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

如何制作u盘启动盘_制作U盘启动盘详细图文教程

如何制作u盘启动盘&#xff1f;一个U盘如果不做成启动盘的话&#xff0c;就只能当存储用。如果一个U盘做成启动盘的话&#xff0c;可以通过U盘启动进入PE&#xff0c;我们就可以对电脑进行重装系统或分区等一些操作使用了&#xff0c;这个主要用于电脑需要救急的情况下使用。用…

jmeter录制脚本做压力测试

1.录制 第一步 设置浏览器代理&#xff0c;我用的火狐。谷歌、IE也是都可以。 我把端口号改成8082了&#xff0c;这个无所谓的&#xff0c;只要不冲突就可以。 紧接着要往浏览器里添加证书。直接搜索证书。把jmeter的证书导入浏览器。 2.在jmeter里设置 添加线程组、http代…

Another-redis-desktop-manager+ffmpeg

一、Another-redis-desktop-manager 1.点击链接下载&#xff1a;Release v1.6.6 qishibo/AnotherRedisDesktopManager GitHub 2. 傻瓜式安装 二、ffmpeg 1.下载&#xff1a;Builds - CODEX FFMPEG gyan.dev 2.下载对应版本 3.添加环境变量&#xff1a;添加到path里&am…

Intent的基本使用

1.Intent是什么&#xff1f; Intent用于Android程序中各组件&#xff08;Activity、BroadcastReceive、Service&#xff09;的交互&#xff0c;并且可以在组件之间传递数据&#xff0c;分为显式Intent和隐式Intent。 Intent是各个组件之间信息沟通的桥梁&#xff0c;既能在Ac…

【24年7月】最新Hexo+GitHubPages搭建个人博客【一】

Hexo 是一个高效的静态网站生成器&#xff0c;使用简洁的 Markdown&#xff08;或其他模板引擎&#xff09;编写内容&#xff0c;支持丰富的插件和主题&#xff0c;允许用户轻松定制网站。它通过将文本转换为静态HTML页面&#xff0c;使得网站加载速度快&#xff0c;易于部署&a…

Linux操作系统的有关常用的命令

1.linux系统的概述 1.1 什么是Linux系统? Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦 兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受…

塔子哥的题解点赞方案-美团2023笔试(codefun2000)

题目链接 塔子哥的题解点赞方案-美团2023笔试(codefun2000) 题目内容 塔子哥写了 n 篇题解&#xff0c;编号从 1 到 n&#xff0c;但是塔子哥忘了每篇题解有多少人点赞了。 现在他有如下两种信息&#xff1a; 1、每篇题解的点赞量都为正数&#xff0c;且不超过 m。 2、第 i 篇…

2024LitCTFmisc复现

secret 这首音乐好听&#xff0c;听完了&#xff0c;中间有段杂音 去AU看看 中间有一段藏了东西&#xff0c;放大 出flag了 flag{Calculate_Step_By_Step} 原铁&#xff0c;启动&#xff01; 解压出来是一张二维码 扫出来是原神 去010看看 看到有压缩包&#xff0c;提取出来 …

关于集成网络变压器的RJ45网口

集成网络变压器的RJ45网口是一种将网络变压器与RJ45接口集成在一起的网络连接解决方案。这种集成设计具有多项优势&#xff0c;使其在现代网络设备中得到广泛应用。 优势与特点 1. **空间节省**&#xff1a;集成设计减少了组件数量和连接线缆长度&#xff0c;有助于节省设备内…

Adobe Premiere Pro(Pr)安装包软件下载

一、简介 Adobe Premiere Pro&#xff08;简称Pr&#xff09;是由Adobe公司开发的一款功能强大的视频编辑软件。它支持多平台使用&#xff0c;包括Windows和Mac系统&#xff0c;并且拥有良好的兼容性和高效的性能。Premiere Pro不仅提供了视频剪辑、特效添加、音频处理等基本功…

监控易V7.6.6.15全新升级14:设置功能全面优化

随着企业IT架构的不断发展&#xff0c;对运维管理的需求也日益增加。为了满足广大用户对运维管理的更高需求&#xff0c;监控易系统近期完成了一次重要版本升级。本次升级在原有功能的基础上&#xff0c;对设置功能进行了全面优化和新增&#xff0c;旨在为用户提供更加灵活、高…

系统架构师(每日一练5)

每日一练 1.某企业准备将四个工人甲、乙、丙、丁分配在A、B、C、D四个岗位。每个工人由于技术水平不同&#xff0c;在不同岗位上每天完成任务所 需的工时见下表。适当安排岗位&#xff0c;可使四个工人以最短的总工时()全部完成每天的任务。答案与解析 ABCD甲7523乙9437丙547…

【每日一练】python编写一个简易计算器

程序代码: #循环语句&#xff0c;条件为真所以循环执行 while True: #定义两个数的变量和运算符号 num1 float(input("第一个数:")) num2 float(input("第一个数:")) syminput("选择运算符 - * /&#xff1a;") #判断运算符号 …

《python语言程序设计》第6章2题(求一个整数各个数字的和)编写一个函数

求一个整数各个数字的和编写一个函数&#xff0c;计算一个整数各个数字的和&#xff0c; def sumDigits(n):a n // 100b n % 100 // 10c n % 100 % 10print(f"{n}数&#xff0c;分成个&#xff0c;十&#xff0c;百&#xff0c;{a}{b}{c}", a b c)sumDigits(23…

算法类学习笔记 ———— 红绿灯检测

文章目录 介绍基于传统视觉方法的检测基于颜色和边缘信息基于背景抑制 基于深度学习的检测特征金字塔网络&#xff08;FPN&#xff09;红绿灯检测特征金字塔自下而上自上而下横向连接 特征融合SSD红绿灯检测 高精度地图结合 介绍 红绿灯检测就是获取红绿灯在图像中的坐标以及它…

73.如何通过自开发的T-CODE找到源代码

目录 步骤1&#xff0c;利用SAP的事务代码表&#xff08;‌TSTC&#xff09;‌-SE16 步骤2&#xff0c;查询源代码 方法1 - SE80 方法2 - SE38 步骤1&#xff0c;利用SAP的事务代码表&#xff08;‌TSTC&#xff09;‌-SE16 通过输入特定的事务代码&#xff08;‌tcode&am…

web前端学习笔记Day02

web学习Day02 一、页面布局 盒子模型 盒子将页面的所有标签都包含在了一个矩形区域content(内容区域)->padding(内边距区域)->border(边框区域)->margin(外边距区域) div标签: 一行只能显示一个&#xff08;独占一行&#xff09;width默认为父元素宽度&#xff0c…

CV每日论文--2024.7.22

1、GroupMamba: Parameter-Efficient and Accurate Group Visual State Space Model 中文标题&#xff1a;GroupMamba&#xff1a;参数高效且准确的群体视觉状态空间模型 简介&#xff1a;我们的论文探讨了基于状态空间模型(SSM)在计算机视觉任务中的稳定性和效率挑战。最近,S…