Docker执行DockerFile构建过程指令解析

Docker执行DockerFile构建过程指令解析

目录

DockerFile 简介

DockerFile 构建过程

DockerFile 指令解析

DockerFile 案例演示

构建一个 mycentos 镜像

DockerFile 简介

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么那些无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

DockerFile 是用来构建 Docker 镜像的构建文件,是由一系列命令和参数构成的脚本。

DockerFile 构建过程

1.DockerFile 内容基础知识

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下,顺序执行

#表示注释

每条指令都会创建一个新的镜像层,并对镜像进行提交

2、Docker 执行 DockerFile 的大致流程

docker 从基础镜像运行一个容器

执行一条指令并对容器作出修改

执行类似 docker commit 的操作提交一个新的镜像层

docker 再基于刚提交的镜像运行一个新容器

执行 dockerfile 中的下一条指令直到所有指令都执行完成

3、总结

从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段

DockerFile:是软件的原材料

Docker 镜像:是软件的交付品

Docker 容器:可以认为是软件的运行态

DockerFile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当Docker 体系的基石

DockerFile:需要定义一个DockerFile,DockerFile定义了进程需要的一切东西。DockerFile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计 namespace 的权限控制)等等

Docker 镜像:再用 DockerFile 定义一个文件后,docker build时会产生一个 Docker 镜像,当运行 Docker 镜像时,会真正开始提供服务

Docker 容器:容器是直接提供服务

DockerFile 指令解析 指令解析
FROM镜像基础,当前新镜像是基于哪个镜像构建
MAINTAINER镜像维护者的姓名和邮箱地址
RUN容器构建时需要运行的命令
EXPOSE当前容器对外暴露出的端口
WORKDIR指定再创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV用来构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY类似ADD,拷贝文件和目录到镜像中,将从构建上下文件目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置
VOLUME保持数据和持久化工作
CMD指定一个容器启动时要运行的命令,DockerFile 中可以有多个CMD 指令,但只有最后一个生效,CMD会被 docker run 之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令,ENTRYPOINT 的目的和CMD 一样,都是在指定容器启动程序及参数
ONBUILD触发器(当别人在使用你的镜像制作新的镜像会触发一个动作)
DockerFile 案例演示 构建一个 mycentos 镜像

自定义mycentos使我们自己的镜像具备,登录后的默认路径为 /test,vim编辑器

#拉取基础镜像 centos:latest [root@docker ~]# docker pull centos #创建工作目录 /dockerfile [root@docker ~]# mkdir /mydocker #编写 dockerfile [root@docker ~]# vim /mydocker/dockerfile_centos FROM centos MAINTAINER zzyy<zzyy167@126.com RUN touch /test ENV MYPATH /test #登录容器落脚点路径 WORKDIR $MYPATH RUN yum install -y vim EXPOSE 80 #暴露的端口80 CMD echo $MYPATH CMD echo "success------------ok" CMD /bin/bash #构建新的镜像 [root@docker ~]# docker build -f /mydocker/dockerfile_centos -t mycentos:test . ……略…… Successfully built ed8bd0ce1d67 Successfully tagged mycenter:test #查看新镜像 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mycentos test ed8bd0ce1d67 39 seconds ago 300MB centos latest 0f3e07c0138f 13 months ago 220MB #启动容器 [root@docker ~]# docker run -it mycentos:test [root@0cdd7d2f5595 test #登录容器落脚点路径]# #验证 vim 是否安装 [root@0cdd7d2f5595 test #登录容器落脚点路径]# rpm -qa vim* vim-minimal-8.0.1763-10.el8.x86_64 vim-common-8.0.1763-13.el8.x86_64 vim-enhanced-8.0.1763-13.el8.x86_64 vim-filesystem-8.0.1763-13.el8.noarch

以上就是Docker执行DockerFile构建过程指令解析的详细内容,更多关于Docker执行DockerFile构建指令的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    聊聊docker下怎么启动容器

    聊聊docker下怎么启动容器,镜像,应用程序,下载,启动,名称,命令,Docker是一种轻量级的虚拟化解决方案,可以将应用和其所有的依赖性封装到一个独立

    如何在linux上安装docker

    如何在linux上安装docker,安装,运行,命令,步骤,用户,版本,随着容器技术的兴起,Docker 已经成为了最为流行的容器引擎。它可以快速构建、部署、运

    如何彻底卸载docker

    如何彻底卸载docker,删除,命令,软件包,文件,卸载,步骤,随着云计算和容器技术的快速发展,Docker已成为现今最流行的容器化应用平台之一。然而,对于

    如何启动docker中的容器

    如何启动docker中的容器,启动,命令,服务,镜像,文件,方法,Docker是一种流行的容器化平台,容器是一种轻量级、可移植的软件包,包含软件应用程序及其

    docker安装的详细步骤

    docker安装的详细步骤,安装,步骤,命令,软件包,系统,应用程序,Docker是一款开源的容器化应用程序,它可以将应用程序及其依赖项打包到一个容器中,从

    怎么给docker换镜像源

    怎么给docker换镜像源,镜像源,镜像,加速器,加速,步骤,命令,随着Docker的普及,越来越多的人开始使用它来构建和部署应用程序。不过,当我们使用Dock

    怎么启动docker

    怎么启动docker,启动,命令,安装,执行,删除,名称,Docker 是一个由 Linux 内核提供的容器化引擎,可以在同一台主机上运行多个容器,这些容器彼此隔离

    docker怎么删除镜像

    docker怎么删除镜像,镜像,删除,命令,系统,执行,名称,Docker是一个用于开发、运行和部署应用程序的开放平台,可以轻松地将应用程序与所依赖的库打

    docker是啥意思

    docker是啥意思,虚拟化,核心,镜像,应用程序,服务器,虚拟机,docker有两种意思:1、指英文单词docker,其中文翻译是“码头工人”;2、指Docker容器,是一

    docker如何正确删除指定容器

    docker如何正确删除指定容器,删除,命令,备份,镜像,数据,运行,随着云计算和虚拟化技术的不断发展,Docker 容器已经成为了应用程序开发和部署的重

    docker怎么在windows上安装

    docker怎么在windows上安装,安装,运行,应用程序,启用,命令,镜像,Docker是一个非常流行的容器化技术,可以在不同的平台上实现应用程序的封装、分

    docker环境怎么进

    docker环境怎么进,镜像,命令,名称,用于,操作,运行,Docker是一种容器化技术,方便开发者进行应用程序的部署和管理。Docker环境是在操作系统上的一

    docker是一个软件吗

    docker是一个软件吗,虚拟化,虚拟机,运行,平台,开发者,用于,docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;dock