没长正的技术专栏 勤动手、多思考

Dockerfile常用命令

2018-10-01

阅读:


Dockerfile命令

容器运用比较广泛,微服务、CI。

基础: docker version 、docker info 、docker-compose version …

Docker中文

1. 什么是 Dockerfile?

​ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

2. Dockerfile各指令

2.1 FROM 和 RUN/CMD

  • FROM:初始镜像来源
  • RUN:构建docker build 时使用
  • CMD: 构建容器时使用
如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

2.2 COPY 与 ADD

  • COPY:将构建镜像是文件或目录拷贝到目的地(官方推荐)。
  • ADD:同COPY类似,针对压缩文件,能自动解压,可能会出现异常,在不解压的前提下,无法复制 tar 压缩文件。

2.3 ENDPOINT 和 RUN

  • ENDPOINT:命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

    ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
    # Dockerfile 中存在多个ENDPOINT 时,只有一个生效
    ENTRYPOINT ["nginx", "-c"] # 定参
    CMD ["/etc/nginx/nginx.conf"] # 变参 
    

2.4 ENV 和AGR

  • ENV:设置环境变量(设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。)
  • AGR:只在dockerfile内有效(docker build时有效,构建好的镜像内无效

2.5 VOLUME卷

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

作用:

  • 避免重要的数据,因容器重启而丢失,这是非常致命的。
  • 避免容器不断变大。

2.6 EXPOSE

仅仅只是声明端口。

作用:

  • 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。

  • 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

2.7 WORKDIR

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。

docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

2.8 ONBUILD

  • 延迟构建(本次不构建,下次构建)

3. DOCKER 镜像优化

  • 基础镜像小 (Alpine)
  • 层级尽量少
  • 去除不必要
  • 复用镜像层
  • 分阶段构建

参考文档

docker文档

菜鸟教程-dockerfile

DOCKER 镜像优化


欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


上一篇 Docker安装

下一篇 Docker 实战

Comments

Content