一、Dockerfile介绍
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像
二、Dockerfile基础结构
Dockerfile由一行行命令语句组成,并且支持以#开头的注释行
一般而言,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
# This dockerfile uses ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..
FROM centos/python-36-centos7:latest
MAINTAINER luozelin
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources/list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
CMD /usr/sbin/nginx
一开始指明所基于的镜像名称,接下来一般是说明维护者信息。后面则是镜像操作指令,例如RUN指令,RUN指令将对镜像执行跟随的命令。每运行一条RUN指令,镜像就添加新的一层,并提交。最后是CMD指令,用来指定运行容器时的操作命令。
三、Dockerfile指令说明
指令的一般格式为INSTRUCTION arguments,指令包括 FROM、MAINTAINER、RUN等
指令 | 说明 | 命令 |
FROM | 指定所创建镜像的基础镜像 | FROM centos:latest |
MAINTAINER | 指定维护者信息 | MAINTAINER luozelin |
RUN | 运行镜像时运行的Shell命令 | RUN ["yum","install","httpd"] RUN yum install httpd |
CMD | 指定启动容器时默认执行的Shell命令 | CMD ["-c","/start.sh"] CMD ["/usr/sbin/sshd","-D"] CMD /usr/sbin/sshd -D |
LABEL | 指定生成镜像的元数据标签信息 | |
EXPOSE | 声明镜像内服务所监听的端口 | EXPOST 80 443 |
ENV | 指定容器内的环境变量 | ENV MYSQL_ROOT_PASSWORD 123456 |
ADD | 复制指定的<src>路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下 | ADD &l |