Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
来源:互联网 发布:怎么联系淘宝在线客服 编辑:程序博客网 时间:2024/05/01 21:06
在本篇中将介绍Dockerfile的编写
除了通过修改Image,创建Container,在打包成Image来创建我们需要的Image之外
我们还可以编写Dockerfile文件,通过build来创建我们需要的Image
Dockerfile是一个文件名,Docker规定必须是这样子来命名的
Dockerfile放在项目的根目录
通过docker build -t {镜像的名字} {项目的路径}
来读取Dockerfile中的代码自动构建一个Image
Dockerfile中每一行指令执行完之后都会提交成为一个Image,这样保证了指令之间不会有影响
而且Docker会尽可能的尝试复用之前的Image
可以通过在build命令中添加–no-cache方式来取消这种cache复用方式
Dockerfile中只支持自己定义的那套指令,在书写时建议全部使用大写
FROM {base Image}
必须放在Dockerfile的第一行,表示从哪个Image开始构建
MAINTAINER
可选的,用来标识Image作者
RUN
每个RUN指令都会是在新的Container中执行,并提交为Image,作为下一个RUN的base image
RUN[“executable”,”arg1”,…]
CMD
在Dockerfile中定义的CMD命令,在提交成Image的时候不会起作用,只有当使用这个Image来创建一个Container的时候,会在Container内部默认执行这条CMD命令
一个Dockerfile中只能有一个有效的CMD
当运行Container时如果指定了command,那么将会覆盖默认设置的这个CMD
下面来编写一个Demo Dockerfile
在/test目录下新建Dockerfile
FROM busybox:ubuntu-14.04RUN touch /test.shCMD ["ls","-al","/"]//默认执行ls -al ///外部可以通过ls -al /usr甚至是ps -al来覆盖原有的command
使用build来构建Image
docker build -t jchubby/testimage /test //-t [image名] [Dockerfile目录]
运行结果如下:
ENTRYPOINT
之前的CMD是定义默认的command命令,但是在运行container的时候可以执行另外的command来覆盖原先的command
ENTRYPOINT的作用是在运行container的时候,设置默认要执行的command命令,是不可修改的,但是可以传不同的参数给这个command命令得到不同的结果
一个Dockerfile中只能有一个有效的ENTRYPOINT
使用ENTRYPOINT
FROM busybox:ubuntu-14.04RUN touch /test.shENTRYPOINT ["ls","-al"]CMD["/"]//默认会执行ls -al ///外部只能通过传不同的路径,来得到对应目录的文件,只能使用ls命令
ADD©
将host上的文件或目录复制到Image中,ADD如果是一个URL的情况下,会将其下载到指定的目录
FROM busybox:ubuntu-14.04RUN touch /test.shADD http://.... /test/..//将指定网址的资源下载到/test/..文件中ENTRYPOINT ["ls","-al"]CMD["/"]
其他的一些Dockerfile指令
ENV
ENV key value
用来设置环境变量,后续的RUN可以使用其创建的环境变量
创建基于该Image的Container时也会自动拥有这些环境变量
WORKDIR
指定当前的工作目录
USER
指定在RUN的时候使用哪个用户
ONBUILD
类似于一个触发器,比如Image a的Dockerfile中制定了ONBUILD,Image b的Dockerfile指定FROM Image a,那么在构建Image b的时候会先执行Image a中的ONBUILD指定的操作(ONBUILD后面跟的是Dockerfile的指令)
VOLUME
通过VOLUME[“path1”,”path2”,…]
来指定某些目录为Container之间可以共享数据,访问的目录
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
- docker解析及轻量级PAAS平台演练
- Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装
- Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
- Docker解析及轻量级PaaS平台演练(四)--Fig相关介绍
- Docker学习三两事(三)Dockerfile 编写
- Docker入门教程(三)Dockerfile
- Docker实战-编写Dockerfile
- Docker入门教程(三)——Dockerfile
- 基于Docker及Kubernetes技术构建容器云(PaaS)平台概述
- 如何基于K8S打造轻量级PaaS平台
- Docker系列~使用Dockerfile构建镜像(三)
- Docker学习笔记(三)- Dockerfile创建本地镜像
- PaaS简介及国内PaaS平台
- 3.docker学习笔记:编写Dockerfile文件
- Docker镜像中Dockerfile的制作或编写
- windows中docker编写一个dockerfile文件
- docker能跨平台,dockerfile不可以。
- 第十一周项目2-储存班长信息的学生类
- 【Android】利用Java代码布局,按钮添加点击事件
- rust实现《一个典型的生产者和消费者的题目和实现》和rust使用感想
- BinarySearch的java语言实现
- (五)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - Mysql安装
- Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
- 我的第一个汇编语言程序:HelloWorld
- vim学习笔记
- 会员卡管理系统技术解析(十三)库存卡作废记录查询
- 中国式教育-虎妈猫爸给我的启发
- MySQL-MMM实现MySQL高可用
- C语言,推箱子游戏
- vb.net版机房收费系统重构的成长历程(功能实现篇)
- 钟表维修管理系统技术解析 维修记录(五)