Dockerfile的编写


Dockerfile由一行行命令语句构成,并 以 # 开头注释行。一般包括四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

基础镜像信息:FROM ubuntu:l14.04

维护者信息: MAINTAINER docker_user

镜像操作指令: RUN mkdir /mnt/temp

容器启动时执行指令: CMD /bin/bash


1.FROM (基于原有的镜像,在此基础上安装配置相关软件)

格式: FROM image_name 或者是 FROM image_name:tag
例如: FROM ubuntu:14.04
  注:Dockerfile的第一行命令必须为FROM命令。

2.MAINTAINER(指定维护者信息)

格式:  MAINTAINER name
例如:  MAINTAINER john

3.RUN

格式: RUN commad 或者是 RUN ["executable","param1","param2"]
例如: RUN mkdir /mnt/cosfs   或者  RUN ["/bin/bash","-c","mkdir /mnt/cosfs"]
前者将在shell终端中运行命令,即/bin/sh -c; 后者则使用exec执行
每一条RUN命令都是在当前镜像基础上执行的,并提交为新的镜像。

4.CMD

支持三种格式
格式: 1.  CMD ["executable","param1","param2"]使用exec执行;
       2.  CMD command param1 param2 在/bin/bash中执行;
       3.  CMD ["param1","param2"]提供给ENTRYPOINT的默认参数;
指定启动容器时执行的命令,每个Dockerfile只能有一条CMD命令。如果指定了多条命令,只能最后一条会被执行。
如果用户启动容器时指定了运行的命令,则会覆盖掉 CMD 指定的命令。

5.EXPOSE

格式: EXPOSE port [port  ...]
例如: EXPOSE 53 80 8443
主要是暴露容器的端口号,在启动容器时需要通过 -P,Docker主机会自动分配一个端口转发到指定的端口;使用 -p,则可以具体指定哪个本地端口映射过来
。

6.ENV

格式: ENV key  value
例如: ENV http_proxy http://192.168.205.21:3128
主要是指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。

7.ADD

格式: ADD src  dest
例如: ADD cosfs /mnt/cosfs
该命令是将docker本地的文件或目录src复制到容器中的位置dest,也可以是一个URL或者是一个tar文件。

8.COPY

格式: COPY src  dest
例如: COPY cosfs /mnt/cosfs
复制本地主机的src(文件或者目录)为容器中的dest。如果目标路径不存在,会自动创建。

9.ENTRYPOINT

有两种格式:
格式:1.  ENTRYPOINT ["executable","param1","param2"]
      2.  ENTRYPOINT command param1 param2
例如: ENV ["/usr/sbin/python","temp.py"]
配置容器启动后执行的命令,ingredients且不可被docker run 提供的参数覆盖。
每个Dockerfile中只能有一个ENTRYPOINT,当指定多个ENTRYPOINT时,只有最后一个生效。

10.VOLUME

格式: VOLUME  ["directory"]
例如: VOLUME  ["/data"]
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。

11.WORKDIR

格式: WORKDIR  /path/to/workdir
例如: WORKDIR  /var/www/html
为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。
可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值