dockefile 指令解释

dockefile 指令解释

#除了注释行之外的第一行,必须是 From xxx (xxx 是基础镜像) 
#第一行先定义基础镜像,后面的本地有效的镜像名,如果本地没有会从远程仓库下载
From centos  

#镜像维护者的信息 
MAINTAINER zt 25958889@qq.com

#指定该容器运行时的用户名和 UID,后续的 RUN 命令也会使用这面指定的用户执行 
USER xx

WORKDIR /a 
WORKDIR b  #指定工作目录,最终为/a/b ,通常很少使用workdir 而使用RUN cd代替

#设置容器挂载主机目录 ,创建一个可以从本地主机或其他容器挂载的挂载点,可以把主机的文件映射到容器。
VOLUME ["/dir_1", "/dir_2" ..] 

#设置容器变量,常用于想容器内传递用户密码等 ,在容器运行之后可以用echo $变量名 查看
ENV name zt

#RUN用于执行from 镜像中的原生shell 命令
RUN yum install nginx

#拷贝本地(默认和Dockerfile在一个目录)的文件拷贝到容器镜像中
COPY src dest
COPY check* /testdir/ 

#ADD自动解压和dockerfile在一个目录的压缩包到容器指定目录。 解压目录如果不存在会自动创建
ADD nginx-1.10.3.tar.gz  /usr/local/src/  


#向外开放的端口,多个端口用空格做间隔,启动容器时候-p 需要使用此端向外映射,可以是多个端口
EXPOSE 80 443

#运行的命令,每个 Dockerfile 只能有一条,如果有多条则只有最后一条被执行 
#如果在从该镜像启动容器的时候也指定了命令,那么指定的命令会覆盖
#Dockerfile 构建的镜像里面的 CMD 命令,即指定的命令优先级更高,Dockerfile 的优先级较低一些 
CMD ["nginx"] 

注意:

​ 写dockerfile 的指令之前 ,可以先起一个父镜像的容器,在这个容器里,先把操作执行一遍,如果没有问题。就把操作写成对应的dockerfile 指令即可。

通常dockefile 不可能一步编写完成,可以把docker build 命令写好放在一个脚本中。每完成一部分就可以执行一下改脚本,确认是否有错误。

​ 在满足业务需求的情况下,可以精简镜像。每条dockerfile中的指令都是镜像中的一层,可以把多条功能相似的命令合并为一条,或者用&&连接起来。然后,可以把构建完成之后的不需要的命令相关软件包都可以删了。这样也可以减小容器体积。 当然,可以选择合适的更小的底层镜像,如alpine。

​ 在写dockerfile 时, 要把不经常变动的指令写在前面 ,如ENV之类的,这样的好处是可以提升构建镜像时的数度。当你第一次构建镜像之后,第二次前n行没有改,那么前n行就不用重写构建了。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读