Dockerd自定义镜像——Dockerfile

Posted tractors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dockerd自定义镜像——Dockerfile相关的知识,希望对你有一定的参考价值。

一、Dockerfile自定义镜像:

  Dockerfile 是一个文本文件,其内包含了一条条的**指令(Instruction);

二、Dockerfile创建:

  1)在一个空白目录中,建立一个文本文件,并命名为 `Dockerfile`:

  2)在Dockerfile文件内写指令;

三、构建镜像:

  docker build [选项] <上下文路径/URL/->

   1Docker上下文构建:docker build -t MyImage .

    //最后一个.点表示当前目录,用于指定上下文(Context)

    上下文:该目录会打包发给docker服务器,docker文件内的操作只能是./当前文件形式,不能是../或者/等;

  2Git repo构建:docker build https://github.com/twang2218/gitlab-ce-zh.git#:8.14

  3)tar压缩包构建:docker build http://server/context.tar.gz

三、Dockerfile指令:

  1FROM指定基础镜像;

    //scratch:FROM scratch;表示一个空白镜像;

  2RUN:

    1shell格式:RUN <命令>;

    2exec格式:RUN ["可执行文件", "参数1", "参数2"];

      //Dockerfile中每一个指令都会建立一层,则需要把多行合并:

      每句语句用/反斜杠结尾,第二局开始用&&符号开头;

     技术图片

  3COPY复制;

    COPY 源路径 目标路径

    <源路径>:可以是多个,甚至可以是通配符;//COPY home* /mydir/

    <目标路径>:

      (1)容器内的绝对路径;

      (2)工作目录的相对路径;//WORKDIR指令设置工作路径;

    //copy指令会把各种源数据保留;

  4ADD

    ADD指令和`COPY`的格式和性质基本一致。

    但是在 `COPY` 基础上增加自动解压tar压缩包的功能。

  5ENV环境变量;

    1ENV <key> <value>;

    2ENV <key1>=<value1> <key2>=<value2>…

    使用变量:$key

  6EXPOSE:声明端口;

    EXPOSE <端口1> [<端口2>...]

    docker run -P:会自动随机映射EXPOSE的端口;

    -p <宿主端口>:<容器端口>和EXPOSE不同:

      -p是暴露端口给外界访问;

      EXPOSE仅仅是声明容器打算使用什么端口,并不会自动在宿主进行端口映射。

  7VOLUME:指定数据卷

    //数据卷的作用就是将一些动态的数据和本地文件/文件夹进行绑定,在读写时使用的是本地的文件/文件夹。

    docker run -p 80:8080 -d  -v /home/ROOT:/usr/local/tomcat/webapps/ROOT/ tomcat

    docker run -v 绝对路径的文件夹:要挂载到的容器内的文件夹/  镜像名

  8WORKDIR:

    WORKDIR <工作目录路径>

    //dockerfile中cd无效,需要指定工作目录;

  9CMD

    运行一个文件,并传入参数;

    CMD ["catalina.sh", "run"]:运行catalina.sh文件并传入参数run;

  10ENTRYPOINT:

    同cmd类似,但是cmd只能执行一次,entrypoint可以执行多次;

 

 

以上是关于Dockerd自定义镜像——Dockerfile的主要内容,如果未能解决你的问题,请参考以下文章

Dockerd的核心概念,镜像操作

Dokcer入门及其Docker file的制作指令

Docker学习笔记:dockerd引擎

Springboot docker jenkins 自动化部署并上传镜像

Docker提高拉取官网镜像的速度

Docker底座