快速入门Docker--- Dockerfile文件

CMD vs RUN vs ENTRYPOINT

CMD命令 :容器启动时默认的命令(一起容器启动时,要运行的命令)。当时如果当运行Container时候声明了 command,则忽略Image中的CMD命令。

CMD的三种定义方法:

CMD<cmd>这个当做 /bin/sh -c "cmd"来执行。
CMD["executable","arg1","arg2"....]

CMD["arg1","arg2"],这个时候CMD作为ENTRYPOINT的参数。

RUN命令:当基于 baseImage 创建新的 Image时,对于 baseImage所有的操作(创建一个文件、执行文件安装等)都可以使用RUN运行一个进行。Dockerfile中可以用多个RUN指定,它们是依次执行。

RUN的两种运行方式:

RUN<CMD> :这个会当做/bin/sh -c "cmd" 运行。

RUN["executable","arg1",...] : Docker把它当做Json序列,而且executable需要完整的路径。

ENTRYPOINT命令:把Container变成一个可执行文件,如果把ENTRYPOINT定义成一个Json格式。CMD不是一个command的效果,它会变成一个参数,添加在 ENTRYPOINT后面。每个Dockerfile只能包含一个ENTRYPOINT,多个ENTRYPOINT指令只有最有一个有效。

注意:当定义ENTRYPOINT以后,CMD只能够作为参数进行传递。

ENTRYPOINT运行方式:

ENTRYPOINT["executable","arg1","arg2"],这种定义方式下,CMD可以通过Json序列的方式来定义ENTRYPOINT的参数,

可以在通过运行 Container的时候通过指定 command的方式传递参数。

新建文件Dockerfile(首字母必须大写)

vim Dockerfile

bseImage: 选择centos

RUN:指定镜像构建时要运行的命令。被创建时镜像 Image时,执行 touch命令,在根目录创建 yqqfile.sh空文件。

CMD: 指定容器启动时默认的命令。

编写完成的Dockerfile文件,可以用 dokcer build 生成 Container。

docker build -t test/osf1 .   (最后的 . 是当前路径)

运行自己创建的Container.

运行自己创建的 Container.默认执行的是创建镜像时候的 CMD命令。

但是如果在启动镜像时声明了command,则创建镜像时的CMD命令被忽略。

修改 CMD命令,变成ENTRYPOINT命令。

此时的CMD命令后面的参数变成 ENTRYPOINT的默认参数。

生成镜像


运行镜像

默认执行的是 CMD 参数。

指定参数,显示  / (根目录)下所有文件的详细信息,此时 CMD命令不会起作用。


ADD vs COPY

ADD & COPY 都可以把主机的文件复制到Image中去,这个文件必须在当前的context路径下。

如果Dockerfile当前的目录是A,则只能把 A中或者A以下的文件拷贝到你的目标Image中去。原因是Docker只会把这些文件打包发给 server 端,一旦穿过这个范围,server就找不到这个文件。

ADD可以把网络的url 下载到目标路径中去。

ENV命令

用来设置环境变量,后续的RUN可以使用当前创建的环境变量。当基于该镜像创建Container的时候,会自动拥有设置的环境变量。

ONBUILD命令

ONBUILD作为一个trigger的标记,可以用来trigger任何Dockerfile的指令。可以定义多个ONBUILD指令。

当一个镜像 B 使用镜像 A 作为 Base的时候,在 FROM A指令之前,会先按照顺序执行在构建A 时定义的ONBUILD指令。

VOLUME命令

用来创建一个在image之外的mount point,用来在多个Container之间实现数据共享。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值