趣文网 > 作文大全

每天5分钟|轻松掌握开发必会的docker套路

2020-11-20 13:55:01
相关推荐

00

写在本章前

在开始本章前,想做一个《每天5分钟docker系列》的内容说明。

很多人学习新技术的时候,往往抓不住技术的主线,上来就从手册第一页读到手册的最后一页,结果因为手册上的命令太多,又不知道用在哪儿,导致学的很迷茫,学着学着就放弃了。

在下不才,略懂一点docker容器相关知识,希望通过应用的角度给小伙伴们提供一个简单易懂的入门教程。

因此,本系列主要从开发常用的一些lnmp的环境配置说起,然后一点一点的介绍里面用到的命令。

有时候文章中说到的一些操作docker提供了很多种命令实现,但我们只会先说一种常用的,为的是保证大家能够了解这个东西从前到后是怎么玩的。

后面咱们会再慢慢地去覆盖其他的命令,这样可以大大降低大家学习的难度,也希望大家能跟着我这个系列坚持下来。

01

认识dockerfile

我们之前安装软件,是到docker hub仓库上面去搜索对应的镜像,

比如安装nginx,我们在对应的nginx下的标签列表中找到自己需要的版本的镜像,如果细心一点我们可以看到,如下的内容:

上图中,箭头所指向的内容是一串英文,中文意思是:支持的标签和相应的Dockerfile链接。

”标签“ 其实就是对应的我们的nginx镜像的版本,但是这里面说到的Dockerfile链接是什么呢?点击一个链接接试试?

点击其中一个标签的链接,便跳转到了github上名称为Dockerfile的文件里面去。

这写着一条条命令的dockerfile和镜像之间有什么关系吗?

Dockfile是专门被Docker程序解析的脚本文件,文件名一般就叫Dockerfile,没有后缀,里面写的一条一条指令,对应着Linux下面的一条条shell命令,Docker程序会将这些Dockerfile指令翻译成真正的Linux命令。

Dockerfile和镜像的关系有点像我们平时写的js,为了压缩js文件的体积,在写完源js文件之后,会执行压缩命令,把js文件压缩,压缩后的js文件体积虽然小,但是打开之后不易读,不好维护,所以我们在代码要修改的时候,还是会修改js源文件,然后再重新生成压缩的js文件。

这里面压缩前的源js文件就好比dockerfile,压缩后的js文件就好比镜像,压缩的命令就好比docker的构建命令。

当我们执行docker build命令进行构建的时候,Docker程序将读取Dockerfile里面的内容,根据指令生成相应的镜像。

因此,当我们需要定制自己的镜像时,只需在Dockerfile上添加或者修改部分指令,然后重新生成镜像即可,省去了敲命令的麻烦。

到这里,我们也就明白了,docker hub上面存放着镜像和Dockerfile的github地址这两种,是为了让人们根据自己的需要去下载,想要自定义镜像的可以下载Dockerfile,想要直接快速构建容器可以docker pull 找个镜像。

02

如何写dockerfile

认识了Dockerfile,那接下来就来看看Dockerfile里面该怎么写吧?

Dockerfile每一行只支持一条指令,且指令需要大写,docker会按照指令从上而下顺序执行。

我们来写一个简单的nginx的Dockerfile文件。

先在一个目录下创建一个名为Dockfile的文件,然后在里面写上下面的内容:

#继承自nginx镜像

FROM nginx

#镜像维护者的姓名和邮箱MAINTAINER

laohemanhua

#设置容器启动后进入的工作目录WORKDIR

/usr/share/nginx/html/

#执行创建目录的命令

RUN mkdir ceshi

#执行进入到ceshi文件夹下

RUN cd ceshi

#将宿主机上./ceshi.html文件拷贝到容器中去

COPY ./ceshi.html /usr/share/nginx/html/ceshi

这段Dockfile的指令,咱们依次来解释下:

第一个命令:FROMnginx,这里面大写的FROM是docker的一个指令,FROM关键词后面跟的什么就代表当前的基础镜像是什么,FROM nginx就代表当前基础镜像是nginx,继承自nginx镜像,我们就不需要再安装nginx了,当然你也可以写其他的镜像,比如centos系统镜像都行。

这有点像面向对象里面的继承父类的意思。当FROM nginx指令执行的时候,docker会先从本地获取nginx镜像,如果没有,会从远程的docker仓库把这个nginx镜像下载下来。

第二个命令:MAINTIANER这个指令后面跟的是作者的名字和邮箱,当然这个命令你也可以不写

第三个命令:WORKDIR这个指令代表容器启动后进入的工作目录

第四个指令:RUN 这个指令代表构建镜像的时候执行哪些shell命令,后面跟的就是shell命令。

第五个指令:COPY这个指令代表我们将宿主机的./ceshi.html文件拷贝到容器中的/usr/share/nginx/html/ceshi目录中去

其实,docker还提供了一些其他的指令,大概十多个,不过这里咱们既然只用到这些,就先说这么多,先入门,了解下怎么玩的,后面咱们再去覆盖其他的命令。

03

通过Dockerfile构建镜像

既然我们自己创建了Dockfile,如何把它变成镜像呢?不是说执行下docker build就好了吗?

是的,只要执行如下的指令就能用我们的Dockerfile文件构建出镜像:

docker build -t local-nginx-1 .

上述命令说明:

docker build命令用来从Dockerfile文件构建出一个镜像出来,-t代表我们要构建出来的镜像叫啥,上面我们的镜像叫做local-nginx,命令的最后还有一个点号,这个点号代表Dockfile文件所在的目录为当前目录,如果在别的目录需要指定清楚。

效果如下,我们可以看到输出了我们刚刚的每一条命令,在最后显示成功构建:

上图也说明,docker在构建容镜像的时候,确实是一条一条的去解析命令。

然后,我们去查看下镜像是不是真的存在,执行docker images,可以看到,镜像确实已经有了。

至此,我们在nginx这个基础镜像上自定义了一个Dockerfile文件,并基于这个Dockerfile文件构建了我们的镜像也就完成了。

好啦,这就是今天的全部内容,如果您有疑问,可以在下方留言哦~

每天5分钟|轻松掌握开发工作中必会的docker套路-docker常用操作

每天5分钟|轻松掌握开发工作中必会的docker套路-初识docker

每天5分钟|轻松掌握开发工作中必会的docker套路-开篇

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

作文选择 500字叙事作文 推荐电影英语作文 象征手法作文 路作文800字 购物的英语作文 二年级50字作文 旅行作文开头 优秀作文350 作文500字写事 450个字的作文 小学作文6年级 我的性格 作文 丁香花作文 有关人的作文 作文能写什么 温暖400字作文 高中语文作文范文 优秀的作文素材 井冈山作文 抗疫人员作文 作文获奖感言 五百字作文初中 作文优秀片段 老师教我作文 茶花的作文 种树的作文 保护自然作文 冬天风景作文 一件事英语作文