FROM指令:

格式为:FROM<image>:<tag>或者FROM<image>

Dockerfile的第一条指令必须是FROM,用来指定要制作的镜像继承自哪个镜像。可以写多个FROM指令构建复杂的镜像。

MAINTAINER指令:

用来声明创建的镜像的作者等信息。该命令非必需。

RUN指令:

格式为RUN<command>或者RUN["命令","参数1","参数2".......]

用来修改镜像的指令,常用来安装库、程序以及配置程序。一条RUN指令执行完毕后,会在当前镜像上创建一个新的镜像层,接下来的指令会在新的镜像上继续运行。RUN的两种格式举例:

RUN yum update

RUN ["yum","update"]

第一种形式是在/bin/sh环境下执行的命令,第二种是直接调用exec来执行。还可以使用&&符号将多条命令连接到同一条RUN语句中执行。

EXPOSE指令:

格式为:EXPOSE<port>

该指令用来讲容器中的端口暴露出来,也可以使用“docker run -p”实现和服务器端口的映射。多个端口之间使用空格隔开。“docket run -P”可以将指定的容器端口映射到宿主机的随机端口。

CMD指令:

该指令有三种格式:

CMD ["命令","参数1",“参数2”......] 使用exec执行,推荐方式。

CMD 命令 参数1 参数2 ....... 在/bin/sh中执行,提供给需要交互的应用。

CMD ["参数1","参数2"......] 提供给ENTRYPOINT的默认参数。

指定容器时执行的命令,每个Dockerfile只执行一条CMD指令。如果指定了多条CMD指令,只有最后一条执行。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD的指令。

ENTRYPOINT指令:

该指令有两种格式:

ENTRYPOINT ["命令","参数1",“参数2”......] 使用exec执行。

ENTRYPOINT 命令 参数1 参数2 ....... 在/bin/sh中执行。

指定容器时执行的命令,每个Dockerfile只执行一条ENTRYPOINT指令。如果指定了多条ENTRYPOINT指令,只有最后一条执行。

ENTRYPOINT和CMD区别在于运行容器时添加在镜像名之后的参数,对于ENTRYPOINT是拼接,而对于CMD命令则是覆盖。当然,我们也可以在运行容器的时候通过--entrypoint搭配起来使用。
例如指定ENTRYPOINT ["ls","-l"],我们运行容器时,docker run centos -a,则实际运行的是docker run centos ls -l -a
通常情况下,将CMD和ENTRYPOINT搭配起来使用。ENTRYPOINT用于 指定需要运行的命令,CMD用于运行命令所需要的参数。 ENTRYPOINT ["ls"] CMD ["-a ","-l"]

VOLUME指令:

格式为VOLUME ["/data"]

创建一个可以从本地主机或其他容器挂载的挂载点。一般用来存放数据库或者需要永久保存的数据。多个容器可以通过挂载同一个挂载点共享数据,即便其中一个容器已经停止,挂载点仍然可以访问。

ENV指令:

格式为:ENV <key> <value>

指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。在运行容器的时候,通过-e参数可以修改这个环境变量。

ADD指令

格式为ADD <src> <dest>

第一个参数用来指定源文件,可以是文件路径、文件夹路径或网络文件的URL。如果是文件夹或者文件夹路径,必须是相对Dockerfile所在目录的相对路径。如果是URL,则创建镜像时,会先下载下来,再添加到镜像中。

第二个参数是文件需要放置在目标镜像的位置。如果源文件是主机上zip或者tar形式的压缩文件,Docker会先解压缩,然后将文件添加到镜像的指定位置。如果源文件是一个通过URL指定的网络压缩文件,则不会解压。

COPY指令:

格式为:COPY<src> <dest>

复制本地主机的<src>(为Dockerfile所在目录的相对路径)到容器的<dest>。当使用本地目录时,推荐使用COPY.

ONBUILD指令:

触发器指令。构建镜像的时候,Docker的镜像构建器会将所有的ONBUILD指令指定的命令保存到镜像的元数据中,这些命令在当前镜像构建过程中并不会执行,只有当新的镜像使用FROM指令指定父镜像为这个镜像时,才会出发执行。

Dockerfile学习(一)的更多相关文章

  1. Dockerfile学习(二)

    这节学习制作一个ssh镜像服务. 创建sshtest目录,进入到该目录中. 假如允许主机B上的root用户可以通过SSH登录到容器内部,那么首先要在B主机上通过ssh-keygen -t rsa命令生 ...

  2. dockerfile学习与详解

    1,什么是dockerfile? dockerfile是相当于docker使用的一个脚本,作用是便于实现自定义的镜像image,用语docker build [OPTIONS] PATH ,只需要指定 ...

  3. dockerfile学习笔记

    Dockfile 参考资料:http://www.cnblogs.com/CloudMan6/p/6864000.html http://www.cnblogs.com/CloudMan6/p/687 ...

  4. docker Dockerfile学习---构建redis环境

    1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0. ...

  5. docker Dockerfile学习---构建mongodb环境

    1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...

  6. docker Dockerfile学习---nginx负载均衡tomcat服务

    1.此过程在nginx的基础上,也就是上篇博客写的内容. 2.创建项目目录并上传包,解压 $ mkdir centos_tomcat $ cd centos_tomcat $ tar zxvf jdk ...

  7. docker Dockerfile学习---构建apache环境

    1.创建目录,上传包 创建项目目录 $ mkdir apache_php $ cd apache_php 把包下载后放到服务器该目录下 $ ls apr-....tar.gz 2.创建Dockerfi ...

  8. DOCKER学习_013:Dockerfile配置指令ENTRYPOINT详解

    前面已经介绍了一些Dockerfile的一些指令,对于ENTRYPOINT和CMD也有介绍实验 一 ENTRYPOINT和CMD配置使用 ENTRYPOINT相当于CMD,是配置容器后的一个指令,但是 ...

  9. [转]Docker(三):Dockerfile 命令详解

    本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...

随机推荐

  1. zendstdio的智能提示功能

    在项目的include的那个地方邮寄,在addsource file  然后指向TP类库的文件夹,刷新项目即可有智能提示

  2. VS2017 - Winform 简单托盘小程序

    界面比较简单,主要两个button 一个NotifyIcon 和 右键菜单 控件, NotifyIcon 属性,如下: 并为NotifyIcon指定了DoubleClick事件: 主窗体增加两个事件: ...

  3. 详解TCP建立连接全过程

    TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A是TCP客户端,B是服务端.最初两端的TCP进程都处于CLOSED状态 ...

  4. App上架注意事项(转)

    上传不出现构建版本 现在苹果要求先上传版本,然后在提交审核,但是现在经常上传完应用后,不出现构建版本,等待很久很久,也不出现,那么怎么解决,我告诉你~~尼玛的苹果是自己数据丢包了,结果就造成你不出现构 ...

  5. 5.25思考双向绑定为什么容易接收js的方式

    一直在考虑为什么html上面的双向绑定好像比winform上面的好用. 那是因为html可以输入任意的东西,不会有问题.而winform不行.这样导致了.html可以比较直观的处理这类需求. 举个例子 ...

  6. Linux虚拟机Centos 设置固定的静态IP

    经过两天的研究(研究到深夜1点),百度了很多文章与加了几个linux的群,终于得到一种方式是可以正常设置静态IP且正常的ssh连接的方式. 第一种方式:NAT模式 参考文章 -- 虚拟机中的CentO ...

  7. centos7.4 install ss-qt5

    一切都是为了FQ,哦,说错了,是***-- 参考官网安装指南 1.新建repo文件 vim /etc//yum.repos.d/shadowssocks.repo 2.在文件中输入以下内容: [lib ...

  8. go的sync.Map

    sync.Map这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用.它一般用于并发模型中对同一类map结构体 ...

  9. hadoop之WordCount源代码分析

    //近期在研究hadoop.第一个想要要開始研究的必然是wordcount程序了.看了<hadoop应用开发实战解说>结合自己的理解,对wordcount的源代码进行分析. <pre ...

  10. asp.net网站底部的版权信息实现代码且可维护

    网站底部的版权信息在特殊情况还是比较重要的所以在实现的时候一定要尽可能的做到可维护性,接下来将介绍一些技巧可达到可维护效果,感兴趣的你可不要错过了哈 一个大网站页面很多,如果每个版权信息直接写在下面, ...