http://blog.csdn.net/wsscy2004/article/details/25878223

如何使用

Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image,并命名为edwardsbean/centos6-jdk1.7:

docker  build -t edwardsbean/centos6-jdk1.7  .

Dockerfile关键字

如何编写一个Dockerfile,格式如下:

# CommentINSTRUCTION arguments

FROM

基于哪个镜像

RUN

安装软件用

MAINTAINER

镜像创建者

CMD

container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD.

CMD主要用于container时启动指定的服务,当docker run command的命令匹配到CMD command时,会替换CMD执行的命令。如:
Dockerfile:

CMD echo hello world

运行一下试试:

edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd
hello world

一旦命令匹配:

edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello edwardsbean
hello edwardsbean

ENTRYPOINT

container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条

ENTRYPOINT没有CMD的可替换特性

USER

使用哪个用户跑container
如:

ENTRYPOINT ["memcached"]
USER daemon

EXPOSE

container内部服务开启的端口。主机上要用还得在启动container时,做host-container的端口映射:

docker run -d -p 127.0.0.1:33301:22 centos6-ssh

container ssh服务的22端口被映射到主机的33301端口

ENV

用来设置环境变量,比如:

ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

ADD

将文件<src>拷贝到container的文件系统对应的路径<dest>
所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
如果文件是可识别的压缩格式,则docker会帮忙解压缩

  • 如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下

  • 如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下。比如:

    docker build github.com/creack/docker-firefox

    docker-firefox目录下必须有Dockerfile和要ADD的文件

注意:使用docker build - < somefile方式进行build,是不能直接将本地文件ADD到container中。只能ADD url file.

ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。

VOLUME

可以将本地文件夹或者其他container的文件夹挂载到container中。

WORKDIR

切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效

ONBUILD

ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行
详见here

Docker Dockerfile详解的更多相关文章

  1. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  2. Dockerfile详解

    Dockerfile详解 利用Dockerfile文件,可以构建docker的image镜像 命令使用 通过-f参数指定Dockerfile路径,进行构建image docker build -f / ...

  3. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  4. Dockerfile详解及优化

    Dockerfile详解 0. Dockerfile的作用 docker可以根据Dockerfile中的指令来构建docker镜像.Dockerfile是一个文本文件,其应当包含用户想要构建一个镜像的 ...

  5. docker入门级详解

    Docker 1 docker安装 yum install docker [root@topcheer ~]# systemctl start docker [root@topcheer ~]# mk ...

  6. 【转】Dockerfile详解

    Dockerfile详解 https://blog.csdn.net/wo18237095579/article/details/80540571 --------------------- 作者:大 ...

  7. docker容器dockerfile详解

    docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...

  8. Dockerfile详解(二)

    Dockerfile文件详解 什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指 ...

  9. k8s记录-Dockerfile详解

    Dockerfile命令详解 下面我们来分别介绍下上面使用到的命令: FROM 格式:FROM 或FROM :. 解释:FROM必须是Dockerfile里的第一条指令(注视除外),后面跟有效的镜像名 ...

随机推荐

  1. lucene-查询query->PhraseQuery多关键字的搜索

    用户在搜索引擎中进行搜索时,常常查找的并非是一个简单的单词,很有可能是几个不同的关键字.这些关键字之间要么是紧密相联,成为一个精确的短 语,要么是可能在这几个关键字之间还插有其他无关的关键字.此时,用 ...

  2. 【POJ 1789】Truck History(最小生成树)

    题意:距离定义为两个字符串的不同字符的位置个数.然后求出最小生成树. #include <algorithm> #include <cstdio> #include <c ...

  3. R语言之RCurl实现文件批量下载

    前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行 ...

  4. 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2095  Solved: 1002[Submit][Status] ...

  5. 计算机组成原理 及CPU,硬盘,内存三者的关系

    前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑的: 键盘鼠标.显示器.机箱.音响等等. 这里显示器为比较老的CRT显示器 ...

  6. POJ3154 Graveyard

    Graveyard Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1654   Accepted: 840   Specia ...

  7. PHP设计模式(二)

    从最近开始我给自己定了个目标,每周至少更新2篇博客,用来记录自己在上一周里面遇到的问题或者想出的新点子,一方面对自己掌握的知识进行记录,免得时间久了忘得一干二净,二来我的博文虽然不怎么好但也许会对一小 ...

  8. Node.js使用Mongoose包操作MongoDB数据库

    1. 安装Mongoose npm install mongoose 2. 使用 2.1 创建连接 var mongoose = require('mongoose'); mongoose.conne ...

  9. AngularJs $resource 高大上的数据交互

    $resource 创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互. 需要注入 ngResource 模块.angular-resource[.min].js ...

  10. 【项目】Http请求在NSMutableURLRequest添加HttpBody的字典params属性

    在请求头中加入字典集合的Body,首先把字典转换成json,然后json转换成NSData,然后加入到HTTPBody中,我有已下写法 // 参数paramsNSDictionary * params ...