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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/share/nginx/html

EXPOSE 80

ENTRYPOINT ["/bin/bash","-g","daemon off;"]

 

###############

用来指定运行时运行的命令

  

1、CMD(exec模式、shell模式、指定一些参数和entrypoint搭配使用)

RUN 指定的命令构建时运行

CMD 容器运行时执行默认行为,如果docker run指定了运行的命令,CMD指定就不再执行。

如:

CMD ["/bin/bash","-g","daemon off;"]

docker build =t="lexiaofei/df_test3" .

docker run -p 80 --name cmd_test1 -d lexiaofei/df_test3

docker ps

 

docker run -p 80 --name cmd_test1 -d lexiaofei/df_test3 /bin/bash #改变默认行为,屏蔽了cmd指令的执行

docker ps

 

2、ENTRYPOINT

ENTRYPOINT [command param1,param2]

ENTRYPOINT command param1,param2

不会被docker run指定指令覆盖!

 

可以使用entrypoit指定命令,用cmd指定参数,运行时可以在docker run中换掉cmd指定的参数。

最终执行就会使用新的命令行参数

 

###############

用来设置镜像的目录文件

3、ADD <src> <dest>

    将文件/目录复制到docker镜像中。

    来源可以是本地地址或远程url,目标路径是镜像中的绝对路径。

  有tar解压功能。

 

4、COPY  <src> <dest>

    将文件/目录复制到docker镜像中。

    来源可以是本地地址或远程url,目标路径是镜像中的绝对路径。

  没有tar解压功能,单纯复制推荐使用copy。

   

  COPY index.html  /usr/share/nginx/html

    

5、VOLUME

  共享数据

  数据持久化

 

###############

用来设置容器的环境

6、WORKDIR

  设置工作目录,entrypoint和cmd的工作目录,

  一般指定绝对路径。

  指定了相对目录会传递下去。

 

7、ENV

  设置环境变量,构建和运行时都有效。

 

8、USER

   指定镜像会以什么用户执行。

 

  USER user

  USER uid

 

  USER user:gid

  USER user:group

  USER uid:gid

  USER uid:group

 

  默认使用root用户。

###############

类似触发器

9、ONBUILD

  镜像触发器,

  当一个镜像被其他镜像作为基础镜像时执行,会在构建中插入指令。

   ONBUILD COPY index.html  /usr/share/nginx/html

 

  

  

以上是关于Docker学习笔记(7-3)Dockerfile的指令的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习笔记-- 如何使用Dockerfile构建镜像

docker学习笔记 --- Dockerfile解析

docker学习笔记——Dockerfile创建自定义镜像

Docker学习笔记-- 如何使用Dockerfile构建镜像

Docker学习笔记 —— 镜像制作(Dockerfile)

Docker学习笔记 —— 镜像制作(Dockerfile)