Dockerfile学习(一)

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指令指定父镜像为这个镜像时,才会出发执行。

时间: 2024-10-10 07:41:50

Dockerfile学习(一)的相关文章

dockerfile学习与详解

1,什么是dockerfile? dockerfile是相当于docker使用的一个脚本,用语docker build [OPTIONS] PATH ,只需要制定dockerfile文件的地址就行了,目前据我所知dockerfile文件的名字只能是Dockerfile dockerfile的作用是便于实现自定义的镜像image,用语docker build -t newImagesName [options] PATH ... 2,如何使用dockerfile? 参考博客:http://blog

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

1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz wget http://mirrors.aliyun.com/repo/epel-7.repo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo tar -zxf redis-5.0.5.tar.gz 2.编辑Docke

Docker(三):Dockerfile 命令详解

上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像. FROM语法格式为: FROM <i

Dockerfile编写

Dockerfile两种方式对比: 1. 一步步的执行 #### (1) 编写Dockerfile文件 vim Dockerfile FROM ubuntu:14.04 ENTRYPOINT ["/bin/echo"] (2)通过Dockerfile文件进行构建镜像 [[email protected] docker]# docker build . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM ubunt

docker基础学习三

一.Dockerfile学习 由一系列的参数和命令构成的脚本.这些命令应用于基础镜像并最终创建一个新的镜像.基础镜像就是操作系统级别的镜像. 常用命令 FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ENV key value 设置环境变量 (可以写多条) RUN command 是Dockerfile的核心部分(可以写多条) ADD source_dir/file dest_dir/file 将宿主机的文件

蚂蚁啃大象之zookeeper学习过程

蚂蚁01啃大象: # 本文作者-刘晓涛 # 创建时间:2016-1-26:22:30 # 完成时间:2016-1-27-23:11 # 我不比别人聪明,学习东西也慢,记忆力也好像降低了(奔三了),但我不能放弃学习止步不前! # 写此文章,一 督促自己还有任务没有完成 二:记录学习过程,方便后期查找,加深记忆 三 共同交流探讨 要啃的大象: (文章:"使用 Docker,7 个命令部署一个 Mesos 集群".文章来源于Linux公社网站(www.linuxidc.com) 链接为:ht

docker使用1

1.5.docker序幕篇[上] 1.5.1 在Win10上准备centos7 和大家说明一下,我们的目的仅仅是要安装一个centos7,然后在centos7上安装docker ? 如果搞不定vagrant+virtualbox的方式,也可以直接使用VM搭建一个centos7 ? 或者你可以直接使用一台云服务器,上面安装了centos7 ? 毕竟我们的目的只是为了得到一个centos7的机器,所以不必花太多精力在这个问题上折腾 ? 我上课用的环境是 [   win10 64位   Virtual

Docker学习笔记(7-3)Dockerfile的指令(二)

学习目标: Dockfile指令 CMD ENTRYPOINT ADD/COPY/VOLUME WORKDIR/ENV/USER ONBUILD Dockerfile FROM ubuntu:14.04 MAINTAINER liangshengqi "[email protected]" ENV REFRESH_DATE 2017-02-05 RUN apt-get update RUN apt-get install -y nginx COPY index.html  /usr/s

docker学习笔记(2)---Dockerfile

在docker学习笔记(1)中,我们提到了通过commit 的命令来提交新的image,下面我们来通过Dockerfile文件来生成image,而且使用Dockerfile,很方便移植. 一.Dockerfile中几个常用的指令: (1)FROM 格式: FROM <image> 或者 FROM <image>:<tag> (2)MAINTAINER 格式: MAINTAINER <name> 说明:设置生成image的作者 (3)RUN 格式: 使用she