内容简介:我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复
我们可以了解到,镜像的定制实际上就是
定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作
的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复
的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是
Dockerfile。
认识Dockerfile
Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。接下来以nginx为列通过Dockerfile文件来制定镜像。
在一个空白目录中,建立一个文本文件,并命名为 Dockerfile :
$ mkdir mynginx $ cd mynginx $ touch Dockerfile
Dockerfile内容如下:
这个 Dockerfile 很简单,一共就两行。涉及到了两条指令, FROM 和 RUN 。接下来就先了解这两个指令。
Dockerfile指令之FROM
FROM指令的目的就是来指定基础镜像。
所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。而FROM就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且 必须是第一条指令 。
在 Docker Hub 上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如 nginx 、 redis 、 mongo 、 mysql 、 httpd 、 php 、 tomcat等;也有一些方便开发、构建、运行各种语言应用的镜像,如node 、 openjdk 、 python 、 ruby 、 golang 等。可以在其中寻找一个最符合我们最终目标的镜像为基础镜像进行定制。
Dockerfile指令之RUN
RUN 指令是用来执行命令行命令的。由于命令行的强大能力, RUN 指令在定制镜像时是最常用的指令之一。其格式有两种:
- shell 格式: RUN <命令> ,就像直接在命令行中输入的命令一样。刚才写的Dockerfile 中的 RUN 指令就是这种格式。
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
- exec 格式: RUN ["可执行文件", "参数1", "参数2"] ,这更像是函数调用中的格式。
前面的文章有说过,Dockerfile 中每一个指令都会建立一层, RUN 也不例外。每一个RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
构建镜像
这里我们使用了 docker build 命令进行镜像构建。其格式为:
docker build [选项] <上下文路径/URL/->
在这里我们指定了最终镜像的名称 -t nginx:v2 ,构建成功后,就可以运行这个镜像了。
在Dockerfile所在目录执行如下图命令来进行镜像的构建:
从命令的输出结果中,我们可以清晰的看到镜像的构建过程。在 Step 2/2 中,如同我们之前所说的那样, RUN 指令启动了一个容器 7c6c2f17c3fc ,执行了所要求的命令,并最后提交了这一层 c3d8143457af,随后删除了所用到的这个容器 7c6c2f17c3fc 。
可以看到,我们刚才构建的ngnix:v2镜像就已存在了,那么就可以以这个镜像为基础启动一个容器
这里再次简单说下运行一个容器的命令:
mynginx-test 容器名称。 -d 设置容器在在后台一直运行。 -p 端口进行映射,将本地 80 端口映射到容器内部的 80 端口。
最后我们在浏览器输入localhost就可以在网页中看到通过Dockerfile文件构建镜像的文本了。
这里看到了内容出现编码导致乱码的问题,这是因为多数 docker 基础镜像使用locale查看编码,发现默认编码都是POSIX,这会导致中文乱码。解决方法如下:
首先使用locale -a查看容器所有语言环境
其次,dockerfile中加入以下参数重新生成镜像
ENV LANG=en_US.UTF-8
ENV TZ=Asia/Shanghai
如果有 en_US.utf8 优先使用
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 定制优化 Nextcloud 镜像
- Docker 定制镜像
- 使用Dockerfile定制LNMP环境镜像
- 使用Dockerfile定制自己的docker镜像
- Docker上定制CentOS7镜像
- 从定制 Ghost 镜像聊聊优化Dockerfile
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
新媒体运营实战技能
张向南 勾俊伟 / 人民邮电出版社 / 2017-5 / 39.80元
《新媒体运营实战技能》共7章。第1章重点介绍了新媒体图片的创意思路及制作技巧,包括微信公众号封面图、信息长图、icon图标、九宫图、gif图片的具体实战操作;第2章重点介绍了创意云文字、微信排版、滑动看图等新媒体文字的排版方法与处理技巧;第3章是新媒体表单,引导读者对表单结构、设计场景及具体应用全面了解;第4章关于H5的创意思路及制作方法,解析了引发H5传播的心理因素,并重点介绍H5的制作工具与具......一起来看看 《新媒体运营实战技能》 这本书的介绍吧!