Dockerfile语法

来源:互联网 发布:pc版拼图软件 编辑:程序博客网 时间:2024/06/17 22:50

build

从Dockfile建立镜像

docker  build  -t <repo>:<tag>  .

FROM

指定base镜像

FROM  python:2.7    # 指定基础镜像为python2.7

ENV

定义环境变量

例子

ENV PORT 9000ENV HOST=“127.0.0.1”CMD echo ${PORT}  ${HOST}

RUN

在当前image的新layer上执行命令,然后提交结果为一个新的image。有两种形式:shell形式和exec形式。

一个shell形式例子

RUN git clone https://github.com/taku910/crfpp.git && \    cd crfpp/ && ./configure && \    sed -i '/#include "winmain.h"/d' crf_test.cpp && \    sed -i '/#include "winmain.h"/d' crf_learn.cpp && \    make install && \    echo "export LD_LIBRARY_PATH=/usr/local/lib" >> ~/.bashrc

CMD

对正在执行的容器提供默认命令。默认的命令在docker run <cmd>时会被重写。

例子

CMD echo "This is a test."

注意:

  • 如果你想启动一个server,这里的命令一定不能是nohup执行

LABEL

给镜像添加元信息

LABEL maintainer例子

LABEL maintainer="wangjiang@datagrand.net"

EXPOSE

通知docker在容器运行时监听特定的网络端口。这条指令实际并不publish端口,它只是作为镜像创建者和容器运行者关于该publish哪个端口的文档

例子

EXPOSE 80

COPY

把本机文件目录拷贝到镜像

例子

copy  .  /code    # 把当前目录所有内容添加到镜像内/code目录下

ADD

把本地或远程文件目录拷贝到镜像

例子

add . /code    # 把当前目录所有内容添加到镜像内/code目录下

注意:

  1. ADD和COPY的区别在于:ADD使用的范围更广,它可以拷贝一个http链接文件,并帮你解压;
  2. 避免在COPY能够满足你需求的情况下使用ADD,因为它可能会出现一些你不期望看到的结果,比如ADD一个压缩文件的时候。

ENTRYPOINT

让容器以应用程序或者服务的形式运行。它和CMD命令比较类似。它指定的命令在docker run <cmd>时仍会被执行

VOLUMN

将主机某个目录挂载到镜像内部。它只能指定镜像目录,所以不建议使用;挂载可以在生成容器时(docker run)使用-v选项实现,它可以指定主机目录和容器目录。

VOLUMN  /data    # 将主机某个目录挂载到镜像的/data目录下

可以使用docker inspect查看主机目录。

原创粉丝点击