八、Dockerfile详细讲解

一、FROM

FROM  ubuntu:14:04
>FROM centos
FROM  scratch

代表是要在那个镜像上面去构建新的镜像
如果是从头去制作一个镜像,不依赖其它的镜像,就用 scratch

二、LABEL

定义了这个镜像的一数据

LABEL 
LABEL  maintainer="joy@163.com"
LABEL version="1.0"
LABEL description="这里是描述"

metadata
maintainer:作者
version:版本
description:描述

LABLE Metadata是不可以少的,道理就是就像我们写代码的时候写注释一样。

三、RUN

RUN get-apt update && get-apt install openssh 
\ python-dev

反斜杠代表换行

RUN apt-get update && apt-get install -y perl \
         pwgen --no-install-recommends && rm -rf \
        /var/lib/apt/lists/*

rm -rf /var/lib/apt/lists/*
装完东西后记得 清理cache

RUN /ban/bash -C 'source $HOME/.bashrc; echo $HOME'

加上环境变量

注意

一个Dockerfile中多次使用RUN,每一次使用都会分层,为了避免分层,可以把多个命令写在同一个RUN下面。

四、WORKDIR

创建 工作目录

WORKDIR  /root
WORKDIR /test
WORKDIR demo
RUN pwd     

没有目录会自动创建 目录, run pwd 输出结果 的目录会是 /test/demo,
也就是说用 WORKDIR 指定工作目录后,应该会进入到 对应的目录上去

注意

用workdir,不要用RUN cd ,尽量使用绝对目录

五、ADD and COPY

把本地的一些文件添加到image里里

ADD hello /

把本地当目录下的hello 添加到 镜像当中的根目录下

ADD test.tar.gz /

把本地目录下的test.tar.gz 添加到 镜像文件的根目录下并解压缩

WORKIDR /root
ADD hello test/

创建/root工作目录 并把系统当前目录下的hello添加到/root/test中

WORKDIR /root
COPY hello  test/

大部分COPY优于ADD,ADD除了有COPY功能外,还有解压功能
添加远程文件目录可以使用 CURL 或者 WGET

六、ENV

ENV MYSQL_VERSION 5.6
RUN apt-get install -y mysql-server="${MYSQL_VERSION}"  \
      && rm -rf /var/lib/apt/lists/*

设置常量 MYSQL_VERSION 5.6
在安装mysql的时候引用
最后清理缓存

七、VOLUME and EXPOSE

八、CMD and ENTRYPOINT

更多dockerfile语法参考官方文档

github docker library

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。