Docker 大热,还不了解 Dockerfile 你就OUT啦~

Posted 软件测试呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 大热,还不了解 Dockerfile 你就OUT啦~相关的知识,希望对你有一定的参考价值。

前言:近年来 Docker 非常火,想要玩好 Docker 的话 Dockerfile 是绕不开的,这就好比想要玩好 Linux 服务器绕不开 shell 道理是一样的。今天我们就来聊一聊 Dockerfile 怎么写,那些指令到底是什么意思。
一、先来看一个简单的 Dockerfile

#这个Dockerfile作用是打一个python3项目环境

二、Dockerfile 编写规则

指令到小写不敏感,为了区分习惯上用大写
Dockerfile 非注释行第一行必须是 FROM
文件名必须是 Dockerfile
Dockerfile 指定一个专门的目录为工作空间
所有引入映射的文件必须在这个工作空间目录下
Dockerfile 工作空间目录下支持隐藏文件(.dockeringore)
(.dockeringore)作用是用于存放不需要打包导入镜像的文件,根目录就是工作空间目录
每一条指令都会生成一个镜像层,镜像层多了执行效率就慢,能写成一条指定的就写成一条

三、Dockerfile 指令详解
1.FROM:基础镜像

1.1、FROM是Dockerfile文件开篇第一个非注释行代码

2.MAINTAINER:镜像作者信息

2.1、废弃了,使用LABLE替代

3.LABLE:镜像描述信息

3.1、LABLE author=“haili”

4.COPY:从 Docker 宿主机复制文件至创建的新镜像文件

4.1、COPY

5.ADD:类似于 COPY 指令,ADD 支持 tar 文件和 URL 路径

5.1、ADD

6.WORKDIR:用于为 Dockerfile 中所有的 RUN、CMD、ENTRYPOINT、COPY、ADD 指定设定工作目录

6.1、WORKDIR /mnt,如果目录不存在会自动创建,包括他的父目录

7.VOLUME:数据卷,用于在 image 中创建挂载点目录,以挂载 Docker host 上的卷或者其他容器上的卷

7.1、VOLUM mount_point

8.EXPOSE:为容器打开指定的监听端口以实现与外部通信

8.1、EXPOSE

9.ENV:用于为镜像定义所需的环境变量,可以被 Dockerfile 文件中其他命令调用(ENV、ADD、COPY、RUN、CMD)

9.1、ENV key value

10.RUN:docker build 镜像构建的时候需要执行的 shell 命令默认"/bin/sh -c"运行

10.1、docker build过程中需要执行的命令

11.CMD:启动容器指定默认要运行的程序或命令,默认"/bin/sh -c"运行

11.1、docker run过程中需要执行的命令

12.ENTRYPOINT:类型 CMD 指令的功能,用于为容器指定默认运行程序或命令

12.1、与CMD不同的是,由ENTRYPOINT启动的程序不会被docker run命令行指定的参数覆盖,这些命令行参数会被当做参数传递给ENTRYPOINT指定的程序

13.CMD 和 ENTRYPOINT 同时存在 Dockerfile 中

13.1、CMD的值会当做参数传递给ENTRYPOINT

14.USER:指定运行 image 时和 Dockerfile 中任何 RUN、CMD、ENTRYPOINT 指令指定的程序的用户

14.1、使用用户名或者UID

15.HEALTHCHECK:健康检查,定义一个命令用于检查主进程工作状态是否健康

15.1、HEALTHCHECK参数

16.SHELL:指定运行 RUN、CMD、ENTRYPOINT 的 shell 程序
17.OPSIGNAL:给主进程发送信号
18.ARG:docker build 过程中的参数

18.1、定义pyton镜像作者,通过参数传入

19.ONBUILD:用于在 Dockerfile 中定义一个触发器

19.1、Dockerfile1中加一个ONBUILD add file,当docker build -t=testpython Dockerfile1的时候ONBUIL
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。

领取关 w/x/g/z/h:软件测试小dao

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

以上是关于Docker 大热,还不了解 Dockerfile 你就OUT啦~的主要内容,如果未能解决你的问题,请参考以下文章

Docker决战到底 制作自己的Jenkins镜像

简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来

简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来

简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来

Docker---Dockerfile编写nginx

了解多阶段 DockerFile 构建