FROM
指定在哪个基础镜像上创建镜像,如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。
语法:FROM
example:FROM centos 以centos为基础镜像
RUN
功能为运行指定的命令
语法:1. RUN
第一种后边直接跟shell命令
在linux操作系统上默认 /bin/sh -c
在windows操作系统上默认 cmd /S /C
第二种是类似于函数调用。
可将executable理解成为可执行文件,后面就是两个参数。
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。
CMD
功能为容器启动时要运行的命令
语法1. CMD ["executable","param1","param2"] 2. CMD ["param1","param2"] 3. CMD command param1 param2
第三种比较好理解了,就时shell这种执行方式和写法
第一种和第二种其实都是可执行文件加上参数的形式
CMD和RUN的区别:CMD会在启动容器的时候执行,build 时不执行,而RUN只是在构建镜像的时候执行,后续镜像构建完成之后,启动容器就与RUN无关。
EXPOSE
设置容器对外暴露的端口,在docker run时需要使用-p参数才生效
ADD
一个复制命令,把本地的文件,目录或远程文件URL复制到镜像中
语法:1. ADD
COPY
ADD的用法类似
语法:1. COPY
与ADD的区别COPY的
ENV
功能为设置环境变量
语法:1. ENV
第一种是一次设置一个,第二种是一次设置多个
VOLUME
可实现挂载功能,可以将内地文件夹或者其他容器种得文件夹挂在到这个容器种
语法:VOLUME ["/data"]
一般的使用场景为需要持久化存储数据时
ENTRYPOINT
语法:ENTRYPOINT command param1 param2
功能和CMD一样,但是配置容器启动后执行的命令,ENTRYPOINT命令并且不可被 docker run 提供的参数覆盖,而CMD是可以被覆盖的。如果需要覆盖,则可以使用docker run --entrypoint选项。
example:ENTRYPOINT "/usr/sbin/nginx -c /etc/nginx/nginx.conf"
USER
指定容器运行时的的用户名和UID
WORKDIR
为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
例如:WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd最终路径是/a/b/c。
HEALTHCHECK
容器健康状况检查命令
语法:1. HEALTHCHECK [OPTIONS] CMD command 2. HEALTHCHECK NONE
第一个的功能是在容器内部运行一个命令来检查容器的健康状况
第二个的功能是在基础镜像中取消健康检查命令
[OPTIONS]的选项支持以下三中选项:
--interval=DURATION 两次检查默认的时间间隔为30秒
--timeout=DURATION 健康检查命令运行超时时长,默认30秒
--retries=N 当连续失败指定次数后,则容器被认为是不健康的,状态为unhealthy,默认次数是3
返回值如下:0: success - 表示容器是健康的 1: unhealthy - 表示容器已经不能工作了 2: reserved - 保留值
Dockerfile 示例:
############################################################ # Dockerfile to build Nginx Installed Containers # Based on Ubuntu ############################################################ # Set the base image to Ubuntu 1.FROM ubuntu # File Author / Maintainer 2.MAINTAINER Maintaner Name 安装Nginx # Install Nginx # Add application repository URL to the default sources 3.RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list # Update the repository 4.RUN apt-get update # Install necessary tools 5.RUN apt-get install -y nano wget dialog net-tools # Download and Install Nginx 6.RUN apt-get install -y nginx Bootstrapping 安装Nginx后,我们需要配置Nginx并且替换掉默认的配置文件 # Remove the default Nginx configuration file 7.RUN rm -v /etc/nginx/nginx.conf # Copy a configuration file from the current directory 8.ADD nginx.conf /etc/nginx/ # Append "daemon off;" to the beginning of the configuration 9.RUN echo "daemon off;" >> /etc/nginx/nginx.conf # Expose ports 10.EXPOSE 80 # Set the default command to execute # when creating a new container 11.CMD service nginx start 保存 dockfile。 使用Dockerfile自动构建Nginx容器 因为我们命令Docker用当前目录的Nginx的配置文件替换默认的配置文件,我们要保证这个新的配置文件存在。在Dockerfile存在的目录下,创建nginx.conf