Skip to content

Ary0075/Dockerfile-Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dockerfile-Generator

项目由 Angular CLI version 6.0.0 创建

运行 ng serve 命令启动服务. 默认地址为 http://localhost:4200/.

关于Dockerfile

FROM

语法:

FROM <image>

FROM <image>:<tag>
  • 绝大多数情况下FROM是 Dockerfile 的第一个命令,它定义了该Dockerfile使用哪个基础镜像启动构建流程 。image可以是任何已存在的镜像。

  • FROM可以在一个 Dockerfile 中出现多次,以便于创建混合的 images。

  • 如果没有指定tag,latest 将会被指定为要使用的基础镜像版本。

MAINTAINER

语法:

MAINTAINER <name>
  • MAINTAINER用于声明作者

COPY/ADD

COPY语法:

COPY <src> <dest>

ADD语法:

ADD <src> <dest>
  • 推荐使用COPY

  • COPY/ADD将文件从路径src复制添加到容器内部路径dest

  • src可以为URL,当遇到URL时候,可以通过URL下载文件并且复制到dest

  • ADDCOPY基本没有区别,仅当用户希望复制到dest中的压缩文件可以自动解压时才需要使用ADD

CMD/ENTRYPOINT

CMD语法:

CMD ["executable","param1","param2"] //本工具根据该语法生成Dockerfile

CMD command param1 param2

ENTRYPOINT语法:

ENTRYPOINT ["executable","param1","param2"] //本工具根据该语法生成Dockerfile

ENTRYPOINT command param1 param2
  • 推荐使用CMD

  • CMD/ENTRYPOINT用于执行特定的命令,这些命令在用镜像构建容器后被调用。

  • 每个Dockerfile中只能存在一个CMD/ENTRYPOINT命令,如果指定了多个,那么只有最后一个会生效。

  • ENTRYPOINTCMD可以结合使用,此时CMD命令可以仅保留参数,参数将传递给ENTRYPOINT命令。

  • ENTRYPOINTCMD的区别在于ENTRYPOINT中的参数始终会被使用,而CMD的额外参数可以在容器启动时动态替换掉。

以下是两个例子:

仅使用ENTRYPOINT:
ENTRYPOINT ["/bin/echo", "Hello"]  

Hello           //通过 docker run -it [image] 启动容器时的输出
Hello CloudMan  //通过 docker run -it [image] CloudMan 启动容器时的输出
使用ENTRYPOINT和CMD:
ENTRYPOINT ["/bin/echo", "Hello"]  
CMD ["world"] 

Hello world     //通过 docker run -it [image] 启动容器时的输出
Hello CloudMan  //通过 docker run -it [image] CloudMan 启动容器时的输出

WORKDIR

语法:

WORKDIR <path>
  • WORKDIR命令用于为后续的RUN CMD ENTRYPOINT命令配置工作目录。

  • 一个Dockerfile可以使用多个WORKDIR命令,如果后续命令的参数是相对路径,则会基于之前命令指定的路径。

RUN

语法:

RUN ["executable","param1","param2"] //本工具根据该语法生成Dockerfile

RUN command param1 param2
  • RUN的用法类似CMD,但是是在镜像构建的过程中执行的,用于对基础镜像进行定制化构建。

ENV

语法:

ENV <key>=<value> //本工具根据该语法生成Dockerfile

ENV <key> <value>
  • ENV命令用于定义镜像的环境变量。

EXPOSE

语法:

EXPOSE <port>
  • EXPOSE命令用于指定端口,使容器内的应用可以通过端口和外界交互。

VOLUME

语法:

VOLUME ["path1","path2"]
  • VOLUME命令用于让容器访问宿主机上的目录。

ONBUILD

语法:

ONBUILD <command>
  • ONBUILD命令是镜像触发器,定义当该镜像被其他镜像作为基础镜像时执行的命令

USER

语法:

USER <name>
  • USER命令用于指定运行时的用户名或UID,后续的RUN命令也会使用指定的用户执行。

  • Dockerfile默认以root权限启动应用程序,为了安全考虑,除非必须使用root权限,否则推荐使用USER命令指定运行用户。

  • 要临时获取管理权限可以使用gosu,而不推荐sudo

LABEL

语法:

LABEL <key1>=<value1> <key2>=<value2>
  • LABEL命令用于添加元数据到镜像中。

  • 一个Dockerfile可以使用多个LABEL命令,每一个LABEL指令会生成一个新的镜像层。 如果需要指定多个labels,推荐将所有的labels合并到同一个LABEL命令中。 如果你使用多个LABEL命令,将导致构建出的镜像效率低下。

ARG

语法:

ARG <name>

ARG <name>=<value>
  • ARG命令用于定义构建时需要的参数,是唯一一个可用于FROM前的命令。

Docker自带的如下ARG参数,可以在其他指令中直接引用:

HTTP_PROXY
http_proxy
HTTPS_PROXY
https_proxy
FTP_PROXY
ftp_proxy
NO_PROXY
no_proxy

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published