Docker,一个傲娇的男人

戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

引言

大概几个月前,我曾经写过一篇文章叫《微服务为什么一定要用docker》。当时,写完这篇以后,有些粉丝表示想看看基本入门教程,希望我写一篇。然后呢,大家也知道,我其实很不爱写这种Hello World级别的文章,所以一拖再拖。于是,趁着近期有时间,烟哥体内的洪荒之力压抑不住了,决定写一篇docker的入门教程。考虑到写这种入门级别的文章,老是贴命令,那不是很无趣!因此,我们用拟人体来写Docker入门教程!

正文

Ladies and gentleman,My name is docker。640?wx_fmt=jpeg


额,尴尬!好吧,容我默默开始介绍自己!我的名字叫Docker,我在2013年的时候,就来到了这个世上!然而那会并没有多少人知道我,对此我哭的很伤心。甚至无数个夜里,我都从梦中惊醒,思考着:当初来到这个世上究竟是对还是错!

640?wx_fmt=jpeg


转眼间来到了2017年,容器技术成为了一种主流,而我成为了容器技术的头牌花魁!俗话说的好,人中吕布,马中赤兔。啊,不对,串场了,不好意思,其实我想表达的意思就是,现在操作系统中首选的是Linux,而容器技术首选的就是Docker啦…..
640?wx_fmt=jpeg额!假装没看到。继续我们的话题,至于我的优点,比如可以提供一致的运行环境啦,可以更轻松的迁移啦…(以下省略10000字)…ps关于这块内容,可以看烟哥的另一篇《微服务为什么一定要用docker》,我就不重复啰嗦了。嗯,接下来,我来介绍一下,我是怎么进行安装的!首先,你要检查一下操作系统的版本….balabalaps这块就略过吧,毕竟怎么安装,应该不用赘述!接下来,我就要说说自己的五个小弟!
  • 镜像

  • 容器

  • 仓库

  • 客户端

  • 服务端

说到这里,我不得不祭出一张图,大家稍等!看图!640?wx_fmt=jpeg


啊,不对,拿错图了。是下面这张640?wx_fmt=png

仓库

所谓这个仓库嘛!就上面最右边的哪个部分Registry。唉,就是放一堆镜像的地方啦。我们可以推镜像到仓库中,同一个镜像也可以有多个版本,这里称为tag,也就是标签!
ps:大家都知道啊,外国的镜像仓库下载慢啊!所以,大家都会去下面这个文件中
修改一下镜像仓库的路径,最出名的就是下面几个啦
  • http://hub-mirror.c.163.com

  • https://mirror.ccs.tencentyun.com

  • 等等

这样就能提升下载镜像的速度啦!最后,记得执行
这样配置就生效了!

客户端和服务端

客户端就是上图最左边到部分,其实就是一个执行docker命令的地方啦!那服务端呢,实际上一个称为docker daemon的守护进程。它既负责监听客户端的请求,并且管理着Docker的镜像、容器、网络、磁盘等资源!

镜像和容器

终于到了重头戏,也就是镜像和容器所谓镜像,是一种轻量级的、可执行的独立软件包,用来打包软件运行环境..(省略100字)..所谓容器,是用镜像创建的运行实例..(省略50字)..640?wx_fmt=jpeg


因为那种说法太复杂了,读者们不会有耐心一个字一个字看的~~
640?wx_fmt=jpeg


其实关于镜像和容器,网上有一个很经典的比喻!
其实在上面那段代码中,Person就可以被理解为镜象,对象p就可以称为之容器。就好像类是可以继承一样,镜像也是可以继承的!640?wx_fmt=jpeg额!!!其实有一个类似的,但是不完全一样。在我这里又一个base镜像的概念,一般要满足下面两个条件
  • 不依赖其他镜像,从 scratch 构建

  • 其他镜像可以之为基础进行扩展


可能这两个条件理解起来可能很抽象。其实很简单的,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等。可以这么理解,99%的镜像都是通过在 base镜像中安装和配置需要的软件构建出来的介绍完几个基本概念后,讲几个常见命令就好,为防误伤,大家注意!
640?wx_fmt=jpeg其实懂几个镜像和容器有关的命令,就差不多ok!

镜像命令

比如你总要知道,怎么拉镜像吧?
这样就能拉取httpd这个镜像了!
那拉到操作系统上的哪个位置呢?
ok,是拉到/var/lib/docker这个目录下,可以通过修改docker.service增加配置,来修改镜像的存储位置!
640?wx_fmt=jpeg好问题!用下面的命令来看
可是,大家会不会有一个疑问?我如何查看远程仓库里有哪些镜像么?
这个命令就能看远程仓库里有哪些 httpd的镜像啦!最后一个就是删除本地镜像的命令。
如下所示:
镜像命令会这四句就够用了!到了容器命令了,记得
640?wx_fmt=jpeg

容器命令

比如,你总要知道当前有哪些正在运行的容器吧,那就是下面这个命令
那怎么运行容器呢,如下所示
这代表的就是运行一个hellp-world的镜像,生成一个正在运行的容器实例。
640?wx_fmt=jpeg


这个容易,/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
最后一个命令,杀掉一个运行中的容器!

数据卷

OK,这里不得不提一个很重要的概念,也就是数据卷!
在docker中,容器一旦关闭,容器中的数据就会丢失。容器重启启动后,不会加载原来的数据!
因此,在实际应用中,我们会将容器内的数据需要持久化到宿主机上!
因此,这个命令,大家一定要了解!
主要注意这个地方
对应就是-v /宿主机:/容器内目录,意思就是宿主机的/test目录挂载到容器的/soft目录!
这个命令,很重要,但凡搭建redis,mysql这样的容器,一定会用到数据卷挂载!

DockerFile

所谓DockerFile,它是一个文本文件,可以用这个文件来构建镜像!所以呢,嗯,我们先来讲讲DockerFile的相关指令
640?wx_fmt=jpeg额,那讲讲原理吧,具体指令大家以后去查询!
ps其实大家工作中自己去写DockerFile几率太低!不知道大家有没听过一个说法,Docker镜像是分层的,类似洋葱一样,一层一层的包装起来的!
为防止大家不认识洋葱,上图640?wx_fmt=jpeg


这话怎么理解呢?那就要从DockerFile说起了!
如下所示
先稍微解释一下
现在,你要编译该DockerFile,生成一个名字为my_test_image的镜像,命令如下
结果如下
第一步,先生成了一个标识符为d1b55fd07600的镜像。
第二步,在第一步的基础上,又包了一层(像洋葱一样),生成一个标识符为44ab3f1d4cd6的镜像
第三部,又在第二步的镜像基础上,又包了一层,生成了一个标识符为174b1e992617的镜像
以此类推,得到我们的镜像!总结,docker在构建镜像的时候,会逐行执行我们的Dockerfile中的每一行,每执行一行的时候,docker就会创建出一个新的层来存放新的内容,最后得到我们的镜像!

总结

本文写到最后,深感痛心疾首!我居然写这么low的文章,默默忏悔。希望大家通过这篇文章能够入门docker!最近忙着复习,预计tiao cao,所以更的慢一点,大家莫催~

640?wx_fmt=png


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 如何高效地准备技术面试?

  • 漫画:有趣的“帽子问题”

  • 我为什么放弃了 Chrome?

  • 5天破10亿的哪吒,为啥这么火,Python来分析

  • 通俗易懂:图解10大CNN网络架构

  • 互联网公司上演反腐风暴;GitHub CEO 对断供表示无能为力;程序员面试锦集| 开发者周刊

  • 在其他国家被揭穿骗子又盯上非洲? 这几个骗子公司可把非洲人民坑苦了……

真香,朕在看了!

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

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

相关文章

英特尔核芯显卡控制面板没有了_只认性能你就输了!英特尔第十代酷睿处理器最全解析...

前不久,英特尔公布了第十代酷睿处理器“Ice Lake”的命名规则,AnandTech网站也曝光了“次旗舰”级别酷睿i7-1065G7处理器的实测性能(详见《10nm新架构Iris Plus核显 第十代酷睿到底有多强?》)。从结果来看,i7-1065G7的CPU性能提升…

阿里敏捷教练何勉:论精益思想及精益产品开发实践体系

摘要: 精益求精是工匠精神实现的最佳方法,通过引入实践精益思想的原则和方法进行精益产品开发,打造对客户最好的产品进行交付,其次通过精益思想的理念降低企业的运营成本,提高企业的运营效率。阿里资深解决方案架构师、…

html页面内分栏显示不全,怎么消除Word文档分栏后栏间不平衡现象

IE10浏览器打开网页鼠标不能滚动查看是怎么回事?IE10浏览器黑屏,但是滚动鼠标就好了,不到一分钟...在控制面板的电源设置中,将显示器的关闭时间调到你希望的时刻就可以了。word文档分栏后左右对不齐怎么办word文档分栏后左右对不齐…

开发经验分享_06_前端开发技巧

接上一篇:(企业内部)开发经验分享_05_葫芦画瓢 https://gblfy.blog.csdn.net/article/details/103414567 文章目录一、JS调试技巧1. 推荐使用consde.log2. 推荐理由3. Network正确的使用姿势①Headers一、JS调试技巧 1. 推荐使用consde.log 推荐使用consde.log(内…

Spring精华问答 | 为什么要学习Spring?

戳蓝字“CSDN云计算”关注我们哦!Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架,应用非常广泛。业内非常流行的SSH架构中的其中一个"S"指的就是Spring。今天我们就一起来看看关于Spring的精华问答!1Q:…

相关系数excel_如何用Excel计算投资组合的有效前沿?

假设一个投资组合由美债和美股构成,美债为跟踪美国投资级债券市场走势的交易所交易基金AGG,美股为跟踪美国标准普尔500指数走势的交易所交易基金SPY。注:在计算有效前沿曲线时投资回报率一般应采用预期回报率,但本文只是为了演示投…

拼的html页面乱,页面分页html拼接

success:function(data){if(data.status "success"){var page data.p;var html;for(var i 0; ihtml html ;htmlhtml;htmlhtmlpage.result[i].infoTitle;htmlhtmlpage.result[i].infoDepict ;htmlhtml;}// 添加分页选项:下一页html html "" "&q…

LoRaWAN开放式实验平台

摘要: 本文介绍了基于loraserver和uDC的LoRaWAN开发平台,基于该平台用户无需投入硬件即可在设备端和服务端进行,极大的降低了入门和开发门槛。 点此查看原文:http://click.aliyun.com/m/43348/ 本文旨在介绍AliOS Things的LoRaWA…

华为开发者大会上,鸿蒙问世、方舟编译器开源、还有 EMUI 10;壕置100万美元,苹果推出漏洞攻击报告赏金计划……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 鸿蒙OS正式对外发布&#xf…

bootstarp怎么使盒子到最右边_折纸教程:漂亮花朵盒子图解,简单实用,一张纸就完成...

爱生活,爱手工,我是爱做手工的小曦!今天给大家带来的是颜值很高的花朵盒子折纸,可以放一些小物件哦!比如棉签什么的,还是很实用的。具体怎么折,和小曦一起来看看吧!花朵盒子折纸教程…

开放分布式追踪(OpenTracing)入门与 Jaeger 实现

摘要: 分布式系统的运维挑战 容器、Serverless 编程方式的诞生极大提升了软件交付与部署的效率。在架构的演化过程中,可以看到两个变化: 应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之而来就会变成微服务之间的调用…

c语言网页版在线编译器_C语言编译器IDEapp下载-C语言编译器IDE官方版下载v1.5.1 安卓版...

c语言编译器IDE是专门为学习c语言的人专门打造的,解决了很多人身边没电脑的问题,这款软件是手机端的编译神器,用手机也可以学习c语言,软件中有很多详细的讲解原理,可以非常好的学习c语言,是初学者的好帮手&…

MWC18见闻录|阿里云的第一届“巴交会”

摘要: 上周,世界移动通信大会MWC18在巴塞罗那举行。非常荣幸能成为阿里云“巴交会”首秀小分队的一员。 短短四日,我们借此平台,给欧洲带去中国数字化转型的经验和技术。来自全世界的参会者也借此机会真实感受到了年轻且在高速发展…

这!不是一点儿super,青云混合云!

戳蓝字“CSDN云计算”关注我们哦!作者|刘晶晶“什么是混合云?”刚一开场,青云QingCloud解决方案及架构副总裁沈鸥就抛出了一个常听却做起来并不简单的问题。青云QingCloud解决方案及架构副总裁 沈鸥其实关于混合云,我们可以简单分…

查看系统版本

cat /etc/redhat-release

《阿里巴巴Android开发手册》v1.0.1更新,优化部分内容和示例代码

摘要: 春节余味尚未消,我们为移动开发者准备了一份迟到的新年礼物——《阿里巴巴Android开发手册》,继《阿里巴巴Java开发手册》之后,阿里巴巴开发规范家族又添一丁,「阿里巴巴Android开发规范」认证考试也同步上线。 …

java 如何循环执行一个对象_Java基础:如何定义好一个方法和进行方法重载

方法就是定义在类中的具有特定功能的一段独立小程序,可以完成特定功能的代码块在很多语言里都有函数的定义函数在java中也称为方法格式:修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...){执行语句;return 返回值;}详细解释&…

再见!微服务

戳蓝字“CSDN云计算”关注我们哦!作者|马岛本文翻译自Alexandra Noonan 的 《Goodbye Microservices: From 100s of problem children to 1 superstar》内容是描述 Segment 的架构如何从 「单体应用」 -> 「微服务」 -> 「140 微服务」 -> 「单体应用」 的…

揭秘 | 直播美颜不靠脸 靠的是阿里云程序员?

摘要: 在这个看脸的时代,美颜已经成为必不可少的社交工具。不仅美颜相机成为了装机必备,各大直播APP也都相继推出美颜功能,利用摄像头对人脸进行追踪并叠加特效的新玩法也层出不穷。在市场热的背后,离不开技术支持。 点…