模板标准
- INSTRUCTION argument指令不区分大小写。但是,命名约定为全部大写
所有Dockerfile都必须以FROM命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像。 - FROM命令可以多次使用,表示会创建多个镜像。具体语法如下:
- FROM
- FROM centos 基于centos这个镜像来构建
- MAINTAINER
镜像作者 - RUN 《command》
- ADD:复制文件指令。它有两个参数
和 。destination是容器内的路径。source可以是URL或者是启动配置上下文中的一个文件 - ADD
- CMD:提供了容器默认的执行命令。 Dockerfile只允许使用一次CMD指令。 使用多个CMD会抵消之前所有的指令,只有最后一个指令生效。 CMD有三种形式:
- CMD [“executable”,”param1”,”param2”]
- CMD [“param1”,”param2”]
- CMD command param1 param2
- EXPOSE:指定容器在运行时监听的端口
- EXPOSE
- ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令,只执行最后的ENTRYPOINT指令。语法如下:
- ENTRYPOINT [“executable”,”param1”,”param2”]
- ENTRYPOINT command param1 param2
- WORKDIR:指定RUN、CMD与ENTRYPOINT命令的工作目录
- WORKDIR /path/to/workdir
- ENV 设置环境变量,它们使用键值对,增加运行程序的灵活性
- ENV
- USER :镜像运行时设置一个UID
- USER
- VOLUME : 授权访问从容器内到主机上的目录
- VOLUME [‘/data’]
Dockerfile创建支持ssh服务自启动的容器镜像
1 | [root@docker]# vim /etc/docker/Dockerfile |
Redis demo
1 | FROM centos:7 |
PHP & Nginx
1 | FROM centos:7.2 |
Nginx
1 | # ./nginx -t |
centos7 php demo
1 | FROM centos:7.2 |
centos 7 Demo1
1 | FROM centos:7 |
centos7 Demo2
1 | FROM centos:7 |