Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
在本篇中将介绍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.04
RUN touch /test.sh
CMD ["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.04
RUN touch /test.sh
ENTRYPOINT ["ls","-al"]
CMD["/"]
//默认会执行ls -al /
//外部只能通过传不同的路径,来得到对应目录的文件,只能使用ls命令
ADD©
将host上的文件或目录复制到Image中,ADD如果是一个URL的情况下,会将其下载到指定的目录
FROM busybox:ubuntu-14.04
RUN touch /test.sh
ADD 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简介与安装
Container技术: 传统的虚拟化技术: 通过对硬件层模拟,从而实现了能够在一套硬件上面运行多个操作系统,因为通过硬件虚拟化,使得操作系统认为在它之下就是硬件层 但是实际情况是这样的:虚拟机中的O ...
- Docker解析及轻量级PaaS平台演练(四)--Fig相关介绍
本篇中将会使用开源工具Fig Fig是什么? 简单的说就是对Docker的封装,从而方便我们构建应用的运行环境 它所做的事情是协调Docker上的各个Container之间的联系,并通过服务发现的方式 ...
- Docker解析及轻量级PaaS平台演练(二)--Docker的一些简单命令
上一篇中,我们对Docker有了一个基本的了解 下面将讨论Docker中Image,Container的相关实际操作 Image管理: 镜像的命名和版本管理: 普通镜像的命名规范 {namespace ...
- Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
- Docker容器技术的PaaS云平台架构设计***
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...
- 基于Docker&Kubernetes构建PaaS平台基础知识梳理
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 基于Docker&Kubernetes构建Paa ...
- 2014 Container技术大会:未来Linux Container会是PaaS平台的核心
不应错过2014 Container技术大会的九大理由. 一.Docker官方人员再次来到北京,首次向中国布道Docker技术.2013年Docker高级软件工程师Jerome Petazzoni,曾 ...
- 【原创】基于Docker的CaaS容器云平台架构设计及市场分析
基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...
随机推荐
- ubuntu16.04搭建个人简易DLP
前言 最近一朋友让我帮忙搭建一台服务器,用做公司的服务器,但是该服务器需要满足一些安全要求,于是乎就有了下面的解决过程^_^ 需求 期望普通用户和管理员都能ssh登陆服务器,但禁止scp或者其他方式下 ...
- Python Requests 小技巧总结
关于 Python Requests ,在使用中,总结了一些小技巧把,分享下. 1:保持请求之间的Cookies,我们可以这样做. import requests self.session = req ...
- 【 Linux 】Keepalived实现双主模型高可用集群
要求: 1. 两台web服务器安装wordpress,数据库通过nfs共享 2. 使用keepalived实现双主模型 环境: 主机: 系统:CentOS6.7 x64 ...
- 【C++】const、volatile不能修饰没有this指针的成员函数
一般所有的成员函数都只有一个复本,当不同的对象调用成员函数时,为了区分是哪个成员在调用,会传入this指针. 当调用有const.volatile修饰的成员函数时,会相应的传入一个const.vola ...
- Appium+python自动化29-toast消息【转载】
本篇转自博客:上海-悠悠 前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到. 一. Supported P ...
- python的上下文管理(context)(1)
本文转载自:http://blog.csdn.net/G_66_hero/article/details/53048540 什么是Python中的上下文管理器 怎么使用上下文管理器 如何创建自己的上下 ...
- AC日记——[ZJOI2007]报表统计 bzoj 1058
1058 思路: 平衡树的题: 然而我的平衡树写一次炸一次QwQ: 而且各种tle: 所以stl水过: 代码: #include <set> #include <cstdio> ...
- php获取rl完整地址
/** * 获取url完整地址 * @author 梁景 * @date 2017-04-27 * @return */ function getUrlInfor() { $sys_protocal ...
- 深入理解Session和Cookie机制
具体来说cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而 ...
- CodeChef - UASEQ Chef and sequence
Read problems statements in Mandarin Chinese and Russian. You are given an array that consists of n ...