Dockerfile编写
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编写的更多相关文章
- Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- 最简单的Go Dockerfile编写姿势,没有之一!
1. Dockerfile一些额外注意点 选择最简单的镜像 比如alpine,整个镜像5M左右 设置镜像时区 RUN apk add --no-cache tzdata ENV TZ Asia/Sha ...
- docker 应用-2(Dockerfile 编写以及镜像保存提交)
我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...
- Dockerfile编写注意事项
转载自:https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/ 一.目标 更快的构建速度 更小的Docker镜像大小 更少的D ...
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
在本篇中将介绍Dockerfile的编写 除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外 我们还可以编写Dockerfile文件,通过build来创建 ...
- Dockerfile 编写
转: https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/如何编写最佳的Dockerfile 译者按: Dockerfile ...
- Docker的简介以及Dockerfile编写与使用
Docker的简介 Docker是在容器的基础上,进行了进一步的封装,极大的简化了容器的创建和维护.使得Docker技术比虚拟机技术更为轻便.快捷. 下面是两张对比图. 可以看到传统虚拟机技术是虚拟出 ...
- Prometheus之Dockerfile编写、镜像构建、容器启动
目录 从官方镜像启动:prom/prometheus 官方Dockerfile分析 编写自己的Dockerfile 构建镜像: 启动容器: 从官方镜像启动:prom/prometheus 拉取镜像 $ ...
- Dockerfile编写语法
docker镜像本质上就是一个个基础镜像的堆叠,为了做出我们想要的镜像,我们需要考虑最终镜像所需的所有基础环境,然后一层层堆叠.也就是不断以基础镜像搭建上层镜像. 先看例子: # Version: # ...
随机推荐
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.3 状态码、错误/故障、ProblemDetails
HTTP状态码 HTTP状态码会告诉API的消费者以下事情: 请求是否执行成功了 如果请求失败了,那么谁为它负责 HTTP的状态码有很多,但是Web API不一定需要支持所有的状态码.HTTP状态码一 ...
- Word表格斜线怎么弄?这里有三种方法很实用
有些时候我们也会在Word文档中插入表格,因为这样可以准确的表达出文档中的内容.大家应该都知道Excel表格斜线怎么弄,那么Word表格斜线怎么弄吗?今天呢小编就帮大家总结了三种方法哦,有需要的小伙伴 ...
- 学习go第一天-编写第一个go程序
开发环境构建 GOPATH 在1.8版本前必须设置这个环境变量 1.8以及更高版本如果没有设置,则使用默认值在Mac上GOPATH可以通过修改 -/.bash_profile来设置 程序基本结构 pa ...
- Vue - 简单实现一个命令式弹窗组件
前言 在日常工作中弹窗组件是很常用的组件,但用得多还是别人的,空闲时间就自己来简单实现一个弹窗组件 涉及知识点:extend.$mount.$el 使用方式: this.$Confirm({ titl ...
- FPGA_VIP_V101 视频开发板 深入调试小结
FPGA_VIP_V101 推出已经有半年有余,各项功能例程已移植完毕,主要参考crazybingo例程进行移植和结合开发板设计了几个实例例程 主要包含: 硬件配置: FPGA:EP4CE6E22C8 ...
- 【JS】380- JavaScript 正则新特性
概括 如果你曾用 JavaScript 进行过复杂的文本处理操作,那么你将会喜欢 ES2018 中引入的新特性.本文将详细介绍第9版标准如何提高 JavaScript 的文本处理能力. 大多数编程语言 ...
- 【Java Web开发学习】Spring环境profile
[Java Web开发学习]Spring 环境profile 转载:http://www.cnblogs.com/yangchongxing/p/8890702.html 开发.测试.生产环境往往是不 ...
- 9月最新184道阿里、百度、腾讯、头条Java面试题合集
阿里面试题 1. 如何实现一个高效的单向链表逆序输出? 2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 3. 给定一个二叉搜索树(BST),找到树中第 ...
- 深入解析Java反射
因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回顾:什么是反射? 反射(Ref ...
- 在 ASP.NET Core 中使用 FluentValidation 进行验证
目录 从 NuGet 安装 FluentValidation 争对 Resource类 建立 FluentValidation 在Startup中对写好的验证进行注册 从 NuGet 安装 Fluen ...