最新要闻
- 实时:背大锅!调查称三成离婚与一方沉迷手机有关
- 当前时讯:制作成本不超一千万、抄袭等争议不断!《满江红》:追究到底 还原真相
- 全球热头条丨惨剧再现 母子俩大年初一家中围炉煮茶身亡:一氧化碳中毒
- 《魔兽世界》国服停止 暴雪激怒中国玩家态度傲慢!中消协发声
- 每日视点!《狂飙》演员演出前才知道自己真实身份 导演太会玩
- 世界热消息:《满江红》7天营收7千万也带不动 光线传媒股价暴跌
- 世界最资讯丨博主曝吉利品牌2023年产品及渠道规划:领克改直营、血拼插混
- 属实赚麻了!《满江红》7天为光线传媒创收7000万元
- 大赚718亿元!网红基金经理张坤、葛兰火速回血
- 【全球聚看点】2022年各国汽车销量榜:中国第一 印度迅猛崛起
- 世界速讯:端劳饭碗 中国研发出玉米秸秆合成淀粉及蛋白技术:成本大降
- THAILAND是哪个国家?thailand怎么读英语?
- 职务怎么填?职务侵占罪立案标准
- 奋进的旋律大结局是什么?奋进的旋律演员表名单
- 春风徐徐下一句的是什么?春风徐徐打一生肖是什么?
- 立春节气的特点和风俗有哪些?立春节气朋友圈句子
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天观天下!Docker数据管理
一、管理docker容器中数据
管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Containers) 。
(资料图片仅供参考)
1.1数据卷
数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作。
需求:宿主机目录/var/www挂载到容器中的/data1。
docker pull centos: 7 注意:宿主机本地目录的路径必须是使用绝对路径。如果路径不存在,Docker会自动创建相应的路径。docker run -it --name test1 -v /var/www:/data1 centos:7 bash#-v选项可以在容器内创建数据卷 lsecho "this is test1" > /data1/test.txtexit #返回宿主机进行查看cd /var/www/cat test.txt
1.2数据卷容器
如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
#创建一个容器作为数据卷容器docker run -it --name test3 -v /data1 -v /data2 centos:7 bash #创建并进入容器echo "this is data1" > /data1/test.txt #容器内创建测试文件1echo "THIS IS data2" > /data2/test.txt #容器内创建测试文件1 #使用--volumes-from来挂载test2容器中的数据卷到新的容器docker run -it --name test4 --volumes-from test3 centos:7 bash #创建并进入容器cat data1/test.txt #查看测试数据是否同步cat data2/test.txt
二、容器互联(使用centos镜像)
容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。
#创建并运行源容器取名web1docker run -itd -P --name web1 centos:7 /bin/bash#创建并运行接收容器取名web2,使用--link选项指定连接容器以实现容器互联docker run -itd -P --name web2 --link web1:myweb1 centos:7 /bin/bash #--link容器名:连接的别名 #进web2容器,ping web1docker exec -it web2 bashping web1
三、Docker 镜像创建
创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建
3.1基于现有镜像创建
(1)首先启动一个镜像,在容器里做修改
docker create -it centos:7 bash docker ps -adocker start eb5fed04f37fyum install net-tools -y # 可以在容器里面安装net-tools工具exit
(2)然后将修改后的容器提交为新的镜像,需要使用该容器的ID号创建新镜像
docker commit -m "new" -a "centos" 000550eb36da centos:test#常用选项:-m说明信息:-a作者信息;-p生成过程中停止容器的运行 docker images
3.2基于本地模板创建
通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:https://wiki.openvz.org/Download/template/precrated
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz#导入为镜像cat debian-7.0-x86-minimal.tar.gz | docker import - debian:test
注释:docker export import
导出容器export
注意:export导出的是容器,不是镜像。
docker export> my_container.tar
导入容器为镜像import
cat my_container.tar |docker import - image_name:tag
3.3基于Dockerfile创建
(1)联合文件系统(UnionFS)
UnionFS(联合文件系统) : Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。AUFS、OberlayFS及Devicemapper都是一种UnionFS。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。我们下载的时候看到的一层层的就是联合文件系统。
(2)镜像加载原理
Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS.bootfs主要包含bootloader和kernel,bootloader 主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统。在Docker镜像的最底层是bootfs,这一-层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之 后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。rootfs,在bootfs之上,包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件。rootfs 就是各种不同的操作系统发行版,比如Ubuntu, Centos等等。我们可以理解成一开始内核里什么 都没有,操作一个命令下载debian,这时就会在内核上面加了一层基础镜像;再安装一个emacs,会在基础镜像上叠加一层image;接着再安装一个apache,又会在images.上面再叠加一层image。最后它们看起来就像一个文件系统即容器的rootfs。在Docker的体系里把这些rootfs叫做Docker的镜像。但是,此时的每一层rootfs都是read-only的,我们此时还不能对其进行操作。当我们创建一个容器,也就是将Docker镜像进行实例化,系统会在一层或是多层read-only的rootfs之上分配一层空的read-write的rootfs。
(3)为什么Docker里的centos的大小才200M?
因为对于精简的OS,rootfs可以很小,只需要包含最基本的命令、工具和程序库就可以了,因为底层直接用宿主机的kernel,自己只需要提供rootfs就可以了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。
(4)Dockerfile
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数 (如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是Dockerfile.Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile.上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。除了手动生成Docker镜像之外,可以使用Dockerfile自动生成镜像。Dockerfile是由 多条的指令组成的文件,其中每条指令对应Linux中的一条命令,Docker 程序将读取Dockerfile中的指令生成指定镜像。Dockerfile结构大致分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。Dockerfile每行 支持一条指令,每条指令可携带多个参数,支持使用以“#“号开头的注释。
(5)Docker镜像结构的分层
镜像不是一个单一的文件,而是有多层构成。容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。
- Dockerfile 中的每个指令都会创建一个新的镜像层;
- 镜像层将被缓存和复用;
- 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;
- 某一层的镜像缓存失效,它之后的镜像层缓存都会失效;
- 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件,只是这个文件在Docker容器中不可见了。
四、Dockerfile操作常用的指令
(1)FROM 镜像
指定新镜像所基于的镜像,第一条 指令必须为FROM指令,每创建一个镜像就需要一条FROM 指令
(2)MAINTAINER 名字
说明新镜像的维护人信息
(3)RUN 命令
在所基于的镜像上执行命令,并提交到新的镜像中
(4) ENTRYPOINT [“要运行的程序”,“参数1”,“参数2”]
设定容器启动时第一个运行的命令及其参数。可以通过 使用命令docker run --entrypoint 来覆盖镜像中的ENTRYPOINT指令的内容
(5) CMD [“要运行的程序”,“参数1”,“参数2”]
上面 的是exec形式, shell形式: CMD命令 参数1 参数2启动容器时默认执行的命令或者脚本,Dockerfile只 能有一条CMD命令。如果指定多条命令,只执行最后一条命令。如果在docker run时指定了命令或者镜像中有ENTRYPOINT,那么cmd就会被覆盖。CMD可以为ENTRYPOINT指令提供默认参数
(6) EXPOSE 端口号
指定新镜像加载到Docker 时要开启的端口
(7) ENV 环境变量 变量值
设置一个环境变量的值,会被后面的RUN使用
(8) ADD 源文件/目录 目标文件/目录
将源文件复制到镜像中,源文件要与Dockerfile 位于相同目录中,或者是一个URL有如下注意事项:1.如果源路径是个文件,且目标路径是以/结尾, 则docker会把目标路径当作一个目录,会把源文件拷贝到该目录下如果目标路径不存在,则会自动创建目标路径2.如果源路径是个文件,且目标路径是不是以/结尾,则docker会把目标路径当作一个文件如果目标路径不存在,会以目标路径为名创建一“个文件,内容同源文件如果目标文件是个存在的文件,会用源文件覆盖它,当然只是内容覆盖,文件名还是目标文件名如果目标文件实际是个存在的目录,则会源文件拷贝到该目录下。注意, 这种情况下,最好显示的以/结尾,以避免混淆3.如果源路径是个目录,且目标路径不存在,则docker会自动以目标路径创建一个月录,把源路径月录下的文件拷贝进来如果目标路径是个已经存在的目录,则docker 会把源路径目录下的文件拷贝到该目录下4.如果源文件是个归档文件(压缩文件),则docker会自动帮解压URL"下载和解压特性不能一起使用。任何压缩文件通过URL拷贝,都不会自动解压
(9) COPY 源文件/目录 目标文件/目录
只复制本地主机.上的文件/目录复制到目标地点,源文件/目录要与Dockerfile 在相同的目录中
(10) VOLUME [“目 录"]
在容器中创建一个挂载点
(11) USER 用户名/UID
指定运行容器时的用户
(12) WORKDIR 路径
为后续的RUN、 CMD、 ENTRYPOINT指定工作目录
(13) ONBUILD 命令
- 指定所生成的镜像作为一个基础镜像时所要运行的命令
- 当在一个Dockerfile文件中加上ONBUILD指令, 该指令对利用该Dockerfile构建镜像(比如为A镜像)不会产生实质性影响
- 但是当编写一个新的Dockerfile文件来基于A镜像构建一-个镜像( 比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令
(14) HEALTHCHECK
健康检查
重点注意事项:在编写Dockerfile时,有严格的格式需要遵循:
- 第一行必须使用FROM指令指明所基于的镜像名称
- 之后使用MAINTAINER 指令说明维护该镜像的用户信息
- 然后是镜像操作相关指令,如RUN指令。每运行一条指令,都会给基础镜像添加新的一层
- 最后使用CMD指令指定启动容器时要运行的命令操作
天天观天下!Docker数据管理
实时:背大锅!调查称三成离婚与一方沉迷手机有关
当前时讯:制作成本不超一千万、抄袭等争议不断!《满江红》:追究到底 还原真相
全球焦点!Nginx 前端部署配置
全球热头条丨惨剧再现 母子俩大年初一家中围炉煮茶身亡:一氧化碳中毒
《魔兽世界》国服停止 暴雪激怒中国玩家态度傲慢!中消协发声
每日视点!《狂飙》演员演出前才知道自己真实身份 导演太会玩
世界热消息:《满江红》7天营收7千万也带不动 光线传媒股价暴跌
世界最资讯丨博主曝吉利品牌2023年产品及渠道规划:领克改直营、血拼插混
Yarn平滑下线节点(Graceful Decommission)
【天天热闻】火山引擎 DataTester:“在字节,A/B 实验是一种信仰”
Asp.Net7 与 Vue3 组成的 BFF模式
属实赚麻了!《满江红》7天为光线传媒创收7000万元
大赚718亿元!网红基金经理张坤、葛兰火速回血
【全球聚看点】2022年各国汽车销量榜:中国第一 印度迅猛崛起
世界速讯:端劳饭碗 中国研发出玉米秸秆合成淀粉及蛋白技术:成本大降
THAILAND是哪个国家?thailand怎么读英语?
职务怎么填?职务侵占罪立案标准
奋进的旋律大结局是什么?奋进的旋律演员表名单
春风徐徐下一句的是什么?春风徐徐打一生肖是什么?
立春节气的特点和风俗有哪些?立春节气朋友圈句子
谷歌浏览器怎么样?谷歌浏览器无法打开网页是什么原因?
地暖怎么进行打压试验?地暖是怎么样供暖的?
LOL裁决之镰怎么解除?lol裁决之镰为什么没了?
《安富莱嵌入式周报》第301期:ThreadX老大离开微软推出PX5 RTOS第5代系统,支持回流焊的自焊接PCB板设计,单色屏实现多级灰度播放视频效果
【全球新要闻】河北小伙深耕OI默默无闻 LOGO设计放眼全球一鸣惊人 当LOGO设计与世界文化擦出火花——JJQ的LOGO设计之路(纯文
MOTO XT390手机什么时候上市的?MOTO XT390手机参数
iPhone5C上市价格是多少?iphone5c还能用微信吗?
当前头条:德系车在中国不香了?2022年大众、BBA少卖了20万台
《满江红》:成也算计 败也算计
【焦点热闻】轻至689克!富士通推出UH-X/H1轻薄本:世界上最轻的14英寸笔电
环球快播:给头发做个香氛SPA:舒蕾山茶花洗发水500ml 19.9元/瓶大促
报道:特斯拉全球开打价格战 大众第一个交枪!CEO:我们不跟
ServletContext与静态变量(static)的区别,数据库连接池放在哪里
最新资讯:Fortran数组排序:冒泡排序法
头条焦点:Python Numpy 中的打印设置函数set_printoptions
环球播报:小米汽车全身照传疯了!轿跑车身+迈凯伦式大灯 网友:保里保气
领90元大额券:可孚全自动血压计49.9元到手 给爸妈买一台
【全球快播报】真正开对撞机的女孩:从不化妆 一守就是13年
当前速看:苹果车祸检测功能误报不断 救援部门被折腾惨了
新消息丨可直接丢进马桶里!德祐湿厕纸大促:3包不到16元
【世界快播报】读Java8函数式编程笔记05_数据并行化
每日热门:首次打破日本垄断 国内量产OLED显示屏关键材料FMM
每日热文:小米MIUI 14最新升级计划出炉:小米11、Redmi K40等25款机型在列
天天要闻:《满江红》票房近32亿 大V称制作成本不超一千万:官方已无视造谣者
世界信息:真实感渲染:模型变换
码龄几十年的老程序员都不知道的存图小技巧“指向立体星” 学到就是赚到!速戳>>
【全球独家】微信春节大数据出炉:发送红包40亿次 《三体》阅读量第一
你想坐吗?国产大飞机C919航班定了:2月28日北京上海首航
天天即时看!CPU核心数越多越好?看懂CPU核心线程数才能不被骗
全球热点![概率论与数理统计]笔记:5.2 参数的最大似然估计与矩估计
Exgcd(扩展欧几里得算法)
【全球报资讯】滑铁卢?《流浪地球2》北美上映票房不敌印度电影
热门看点:ChatGPT爆火:谷歌、Meta等压力大
微资讯!男子把绿动车当成绿皮车抽烟被拘:其实是“绿巨人”电力动车组
当前速看:状告4位大V后 《满江红》片方称不再起诉其他造谣者:不再回应
装饰模式
全球热头条丨漫威宇宙十大战力英雄:钢铁侠仅排第五
【世界新要闻】Intel花六个月造了一块乐高Arc显卡:1比1完美复刻!
环球资讯:【byob】 payload 生成过程
每日时讯![概率论与数理统计]笔记:5.1 点估计概述
热议:VMware vSphere ESXi 7.0安装配置
天天热点评!QPython实例01-获取所有短信并生成词云
世界观点:微信:2023年春节用户发红包超40亿次 竖屏春晚超1.9亿人观看
世界微动态丨Uzi再被冻结43万股权!公司与范丞丞合作
Blazor模式讲解
全球信息:国补退坡 上海延续新能源车置换补贴:单车补1万元
【全球时快讯】米哈游全新力作!《崩坏:星穹铁道》全平台预约已突破千万
今日热门!富豪刘銮雄拍卖76只爱马仕包:最贵一只200万
【全球时快讯】算法对算法!斯坦福大学推出DetectGPT:阻止学生用AI写作业
今日观点!2月2日或能肉眼看见5万年一遇的绿色彗星:正迅速逼近地球!
焦点资讯:Kubernetes监控手册06-监控APIServer
全球最资讯丨CRT&EXCRT(中国剩余定理和扩展中国剩余定理)
【新视野】学习笔记——redis事务、乐观锁、悲观锁
国内首家!统信操作系统成功获得商用密码产品认证证书
环球热点!“流浪地球”成功的概率有多高?你肯定想不到
当前视点!脑洞大开的机械键盘 内部竟搭CPU和GPU
天天百事通!阿里云推全国首个跨省域智慧大脑:汇聚江浙沪242项数据资源
全球资讯:不得不防!奥密克戎新变异毒株“双头犬”现身美国:已被世卫监测
【环球热闻】记录--Vue PC前端扫码登录
[概率论与数理统计]笔记:4.4 抽样分布
当前速讯:1.29数论课笔记
最新快讯!40万级乱杀!全新国产奔驰GLC配置曝光:四款车型、两种外观
全球焦点!Gamerant赞《黑神话·悟空》:虚幻5打造《西游记》传说值得期待
天天要闻:这外观似曾相识!荣耀Magic 5 Lite曝光:后置圆环三摄
全球快看:《狂飙》爆火出圈!《孙子兵法》登顶淘宝热搜 发货要等25天
男子2月没摘隐形眼镜:镜片长到眼球上
焦点日报:时区介绍
前沿热点:Matlab导入多个.mat文件进行画图
每日信息:对标三星索尼!SK海力士重组CMOS图像传感器团队
天天微头条丨网友吐槽美国医院3小时拔不出一根鱼刺 急诊那是真不急
全球微资讯!耶路撒冷老城千年护城河道惊现神秘手印 专家:或为工人恶作剧
最新快讯!立减40元:露得清氨基酸洗面奶19.9元到手 男女通用
世界看热讯:5G四足机器人“入职”中国电信核心机房:支持自主巡航 360度旋转夜视
乘法逆元
今日看点:C++11简易线程池实现
002-dockerfile部署java项目
当前观点:springboot~openfeign开启熔断之后MDC为null的理解
焦点播报:WebAPI_DAY1
猛禽之王!摄影爱好者抓拍到金雕展翅抓羊场面:超震撼