Docker Dockerfile详解

原创 2014年05月15日 11:09:32

如何使用

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学习笔记(3)-- 如何使用Dockerfile构建镜像

原文地址:http://blog.csdn.net/we_shell/article/details/38445979 Dockfile是一种被Docker程序解释的脚本,Dockerf...
  • qinyushuang
  • qinyushuang
  • 2015年01月31日 17:48
  • 130372

docker筑基篇-04-使用Dockerfile构建自己的镜像

构建自己的镜像 1 构建Dockerfile上下文 2 Dockerfile文件内容 3 构建镜像 4 启动容器 构建过程中的几个问题 1 Dockerfile大致流程 2 缓存上一篇文章介绍了使用d...
  • hylexus
  • hylexus
  • 2016年10月18日 23:54
  • 3650

使用Dockerfile

今天看到汪云飞老师的Spring boot实战中关于Dockerfile的创建以及用docker部署项目,感觉非常简单,这里跟大家分享下。 默认有一台已经安装了docker的主机,新建一个s...
  • qq_35981283
  • qq_35981283
  • 2017年04月06日 14:31
  • 1446

Dockerfile 最佳实践

Dockerfile 最佳实践本文是 Docker 官方文档 docs/archive:v1.1 中 Best practices for writing Dockerfiles 的理解和翻译。包含了...
  • shimachao
  • shimachao
  • 2016年11月27日 19:06
  • 5055

Docker Dockerfile详解

dockerfike快速创建自定义的Docker镜像 一、目录 1.docker典型结构 2.指令介绍 3.创建docker镜像二、结构 DockerFile分为四部分组成:基础镜像信、维护...
  • mozf881
  • mozf881
  • 2017年02月19日 09:28
  • 5552

Docker学习笔记五:Dockerfile

Dockerfile docker build
  • Marco_90
  • Marco_90
  • 2016年12月06日 16:39
  • 2322

实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署

动手制作一个镜像,实现web应用在线部署
  • boling_cavalry
  • boling_cavalry
  • 2017年04月15日 15:06
  • 7051

Dockerfile 指令详解

Docker创建镜像的方式有两种: 一种通过commit的方式:把做了一系列操作的容器关闭,然后利用docker的commit指令:dockercommit 容器ID 镜像名:tag。然后docker...
  • i6448038
  • i6448038
  • 2016年03月11日 13:58
  • 10347

docker学习笔记4.1-使用Dockerfile文件构建镜像

构建镜像有两种方法 使用docker commit命令 使用dockerfile文件构建镜像 commit 类似于git的提交命令,但是不够灵活,应用范围不够广泛,所以在这里只介绍第二种,有兴趣大家...
  • qq_32907349
  • qq_32907349
  • 2016年05月28日 12:09
  • 1200

dockerfile简单使用

----------------------------------------------------------------------------------------------------...
  • weixin_35494719
  • weixin_35494719
  • 2017年06月30日 00:12
  • 274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker Dockerfile详解
举报原因:
原因补充:

(最多只允许输入30个字)