Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
编写命令:

1.FROM
作用:声明使用哪个基础镜像
格式:FROM IMAGE:TAG
例: FROM nginx:latest
2.LABEL
作用:指明作者
格式:LABEL author=tian
3.ENV
作用:声明环境变量
格式:ENV KEY=VALUE
例:ENV workdir=/var/www/html
4.WORKDIR
作用:声明工作目录
格式:WORKDIR 工作目录
例:WORKDIR $wrkdir
WORKDIR /var/www/html
WORKDIR /usr/local/apache2
5.RUN
作用:执行命令
格式: RUN cmd && cmd2
例:RUN yum install httpd -y && systemctl enable httpd
相当的指令尽量放到一层
6.EXPOSE
作用:声明暴露的端口
格式:EXPOSE 80 3306
7.COPY
作用:复制Dockerfile 工作目录下的文件至镜像内
格式:COPY SRC DEST
例:COPY psswd /etc/
注意:源文件路径用相对路径 目标一般用绝对路径
也可使用通配符
源文件必须在工作目录或者工作目录的子目录中
目标路径可以不存在,会自动创建
如果源文件是一个目录,会自动递归复制目录下的文件到目标位置,目录本身不会被复制
如果复制多个文件,或者源文件中用了通配符,那么目标路径必须以 / 为结尾
8.ADD
作用:复制
格式:ADD SRC DEST
例:ADD tian.tar.gz /etc/
ADD 和COPY区别
ADD会自动解压tar 包
ADD 可以从网络上下载,但是这时候的tar包不会被解压
9.VOLUME
声明挂载点
格式:VOLUME DEST
例:VOLUME /var/www/html
10.触发器 #当别人用你的镜像制作新的镜像时候会触发一个动作
格式:ONBUILD 动作
例:ONBUILD ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/adwaita-qt-common-1.0-1.el7.x86_64.rpm /date
11.CMD
作用:执行命令 PID为1的指令
格式:CMD 命令
例:CMD nginx -g daemon off;
CMD ["nginx","-g","daemon off;"]
12.ENTRYPOINT
作用:执行命令 PID 为1的指令
格式:ENTRYPOINT 指令
例:ENTRYPOINT nginx -q daemon off;
ENTRYPOINT ["nginx","-g","daemon off;"]
CMD ["-g","daemon off;"]
ENTRYPOINT ["nginx"]

# :指备注,注释
指令参数,指令的大小写不敏感 #通常情况下一般使用大写
第一个非注释行必须是FROM指令 #在没有注释的Dockerfile中。FROM必须是首行
编写Dockerfile必须在一个目录下进行,这个目录称之为 工作目录(WORKSPACE)
Dockerfile文件命令的首字母必须大写
制作镜像所要用的文件必须放在工作目录或者工作目录的子目录之下,不能放在父目录
可以通过隐藏文件 .dockeringnore 来指定不要放入到镜像中的文件,一行是一个文件,可以用通配符
基于dockerfile做镜像,本质上还是基于一个现有的镜像做新镜像

例:基于httpd镜像演示上面所有的指令

第一步:创建Dockerfile工作目录
mkdir test

cd test
vim Dockerfile

#this is my first Dockerfile
FROM httpd:latest
LABEL author=tian
ENV dir=/usr/local/apache2/htdocs
WORKDIR $dir
COPY test1 ./
RUN touch test2
ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/adwaita-qt-common-1.0-1.el7.x86_64.rpm ./
EXPOSE 80 3306
VOLUME $dir
CMD ["httpd-foreground"]

第二步:基于dockerfile创建镜像
docker build -t httpd:tian1 .

第三步:基于新创建的镜像启动容器
docker run -d httpd:tian1

Dockerfile编写的更多相关文章

  1. Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  2. 最简单的Go Dockerfile编写姿势,没有之一!

    1. Dockerfile一些额外注意点 选择最简单的镜像 比如alpine,整个镜像5M左右 设置镜像时区 RUN apk add --no-cache tzdata ENV TZ Asia/Sha ...

  3. docker 应用-2(Dockerfile 编写以及镜像保存提交)

    我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...

  4. Dockerfile编写注意事项

    转载自:https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/ 一.目标 更快的构建速度 更小的Docker镜像大小 更少的D ...

  5. Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写

    在本篇中将介绍Dockerfile的编写 除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外 我们还可以编写Dockerfile文件,通过build来创建 ...

  6. Dockerfile 编写

    转: https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/如何编写最佳的Dockerfile 译者按: Dockerfile ...

  7. Docker的简介以及Dockerfile编写与使用

    Docker的简介 Docker是在容器的基础上,进行了进一步的封装,极大的简化了容器的创建和维护.使得Docker技术比虚拟机技术更为轻便.快捷. 下面是两张对比图. 可以看到传统虚拟机技术是虚拟出 ...

  8. Prometheus之Dockerfile编写、镜像构建、容器启动

    目录 从官方镜像启动:prom/prometheus 官方Dockerfile分析 编写自己的Dockerfile 构建镜像: 启动容器: 从官方镜像启动:prom/prometheus 拉取镜像 $ ...

  9. Dockerfile编写语法

    docker镜像本质上就是一个个基础镜像的堆叠,为了做出我们想要的镜像,我们需要考虑最终镜像所需的所有基础环境,然后一层层堆叠.也就是不断以基础镜像搭建上层镜像. 先看例子: # Version: # ...

随机推荐

  1. Oracle 数据库启动与关闭

    只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果没有启 ...

  2. Xcode9 gitHub管理代码

    https://www.raywenderlich.com/153084/use-git-source-control-xcode-9 首先上一个参考链接 在xcode9 创建工程时勾选git管理.利 ...

  3. unrecognized selector sent to class 0x10a4ce490 我躺过的坑

    错误现象:unrecognized selector sent to class 0x102265ad8’ 错误原因: Other Linker Flags 链接设置错误导致类扩展不知道如何正确读取, ...

  4. JavaScript基础3

    While循环 在指定条件为真时循环执行代码块.先确定条件再执行代码 语法 while(条件) { 需要执行的代码 } 条件中所用变量如果没有值,循环就不会停下,会导致浏览器崩溃: do...whil ...

  5. 2019 湖南多校第一场(2018~2019NCPC) 题解

    解题过程 开场shl过B,C,然后lfw写J,J WA了以后shl写A,但是因为OJ上空间开小WA了,而不是MLE?,J加了特判过了.之后一直在检查A错哪了,直到qt发现问题改了空间,浪费许多时间,但 ...

  6. git 设置和取消指定域名代理 - git config proxy

    Firstly - Check Check if U have global .gitconfig file 检查是否有全局 .gitconfig 文件 Usually global .gitconf ...

  7. unity3d WeelCollider 漂移

    物理漂移 基础控制不在说明 Forward Friction 为轮胎直线摩擦力 Sideways Friction 为侧面摩擦力 Extremum Slip为速度达到多少后产生漂移效果 Extremu ...

  8. Bootstrap响应式栅格系统设计

    为了方便起见,我们通过1200px宽的屏幕来讲解bootstrap中container.row.col的css属性值为何这样设置的原理 在1200px屏幕中为何container的宽度设置为1170p ...

  9. 前端小白要搞懂什么是HTML,看这一篇就够了

    本文是<HTML5与CSS3基础语法自学教程>的第一篇,首发于[前端课湛]微信公众号. 导读:本小节主要讲解 HTML 的基本信息,其中包含 HTML 概念.HTML 发展历程和 HTML ...

  10. eclipse新建maven项目报错Could not resolve arachetype org.apache.maven.archetypes:mmaven-archetype-quickstart:1.1 from any of the configured repositories

    使用eclipse新建maven项目,按下图所示选择后,报错 报错截图 报错详细信息 Could not resolve archetype org.apache.maven.archetypes:m ...